随笔 - 76, 文章 - 0, 评论 - 5, 阅读 - 46468

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

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

Posted on   WinChance  阅读(351)  评论(0编辑  收藏  举报

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

代码如下:

复制代码
/// <summary>
/// 将数个Excel文件中的第一个工作表合并至一个Excel文件中
/// </summary>
/// <param name="excelFilePaths">需要合并的数个Excel文件路径</param>
/// <param name="desFilePath">合并成的一个Excel文件路径</param>
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一致。

转载:C# NPOI 合并多个工作簿(Workbook)的第一个工作表(Sheet) - lukai - 博客园 (cnblogs.com)

相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示