C# NPOI 合并多个工作簿(Workbook)的第一个工作表(Sheet)

您所在的位置:网站首页 工作簿中多个工作表合并 C# NPOI 合并多个工作簿(Workbook)的第一个工作表(Sheet)

C# NPOI 合并多个工作簿(Workbook)的第一个工作表(Sheet)

2024-07-07 07:42| 来源: 网络整理| 查看: 265

  最近在工作中用到了一些NPOI,发现很好用,但是说明文档比较少,好多人都直接去参考POI?希望NPOI作者或者某位使用NPOI较多的大神能完善相关文档,让这个好用的工具更加好用。回到正题本次项目中主要用到合并多个工作簿(Workbook)的第一个工作表(Sheet)这个功能,一开始的做法是利用XSSFWorkbook.CloneSheet(int sheetNum)这个方法返回一个复制的ISheet,然后用XSSFWorkbook.Add(ISheet item)加入这个复制的ISheet就达到了跨工作簿(Workbook)复制的目的,但是程序运行下来没效果,然后我猜想这个CloneSheet是复制的本工作簿(Workbook)的工作表,不能跨工作簿(Workbook)复制。一番努力找到了跨工作簿(Workbook)复制的方法。记录如下,希望遇到与我一样问题的人能受益。

代码如下:

/// /// 将数个Excel文件中的第一个工作表合并至一个Excel文件中 /// /// 需要合并的数个Excel文件路径 /// 合并成的一个Excel文件路径 private void MergeExcels(string[] excelFilePaths, string desFilePath) { XSSFWorkbook mergeWorkBook = new XSSFWorkbook(); for (int i = 0; i < excelFilePaths.Length; i++) { if (File.Exists(excelFilePaths[i])) { using (FileStream fs = new FileStream(excelFilePaths[i], FileMode.Open, FileAccess.Read, FileShare.Write)) { XSSFWorkbook tmpWorkBook = new XSSFWorkbook(fs); XSSFSheet tmpSheet = tmpWorkBook.GetSheetAt(0) as XSSFSheet; tmpSheet.CopyTo(mergeWorkBook, Path.GetFileNameWithoutExtension(excelFilePaths[i]), true, true); } } /* 考虑数据量,此处可以限制最多可以合并工作表的数量 */ //if (mergeWorkBook.NumberOfSheets >= 200) //{ // break; //} } if (mergeWorkBook.NumberOfSheets != 0) { FileStream fsDesFile = new FileStream(desFilePath, FileMode.OpenOrCreate, FileAccess.Write); mergeWorkBook.Write(fsDesFile); fsDesFile.Close(); mergeWorkBook.Close(); } else { mergeWorkBook.Close(); } }

 

HSSFSheet 也有CopyTo()方法,并且参数与XSSFSheet一致。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3