HSSFWorkbook是生成xls文件,旧版的Excel
需求是设置一个模版Excel,每次使用时,重新生成一个Excel,拷贝模版的sheet加入到新生成的Excel中
//假设你的数据源为ds,新生成的文件导出地址path public static void ExportE0092(DataSet ds string path) { using (FileStream fileStream = new FileStream(path, FileMode.Create)) { try { //用于获取当前工作目录的完整路径 string executingAssemblyPath = Environment.CurrentDirectory; //当前工作目录的上级 string directoryName = Path.GetDirectoryName(executingAssemblyPath); //当前工作目录的上上级 string parentDirectoryName = Directory.GetParent(directoryName).FullName; //拼接你的模版文件地址 string excelPath = Path.Combine(parentDirectoryName, "file\\Template\\文件名.xls"); //打开文件 FileStream excelModel = new FileStream(excelPath, FileMode.Open, FileAccess.Read); //模版文件 HSSFWorkbook modelbook = new HSSFWorkbook(excelModel); //模版文件的sheet,使用HSSFSheet HSSFSheet sourceSheet = modelbook.GetSheetAt(0) as HSSFSheet; //新建一个excel HSSFWorkbook workbook = new HSSFWorkbook(); //循环数据源创建sheet,有几个DataTable,创建几个sheet for (var i = 0; i < ds.Tables.Count; i++) { string nameStr = ds.Tables[i].TableName; DataTable hkTable = ds.Tables[i]; //创建一个sheet sourceSheet.CopyTo(workbook, nameStr, true, true); //sheet就是你新建的Excel中刚拷贝过去的sheet ISheet sheet = workbook.GetSheet(nameStr); //第一行,标题 IRow row0 = sheet.GetRow(0); row0.GetCell(0).SetCellValue("赋值"); //…………下面就是你在sheet中的赋值信息 } //写入流 workbook.Write(fileStream); //文件流关闭 excelModel.Close(); } catch (Exception ex) { throw new Exception(ex.Message); } } }
此方法可以将sheet中的表格设置样式都拷贝出来,但是我测试只能拷贝12个sheet,多于12个后开始表格样式丢失
少于12个sheet的宝子可以用用,但是多了还是不行,有解决方法的宝子评论区可以指教一下,多多交流,哈哈哈
标签:Excel,sheet,string,模版,HSSFWorkbook,NPOI,ds From: https://www.cnblogs.com/guangfangxiaokeai/p/18243519