各位大大好:小弟为c#新手,目前收到一个C#需求,如下描述:

要读取资料夹内特定名称的多个Excel,(例如:Excel档名为ABC_2024_01、ABC_2024_02 ... ABC_2024_12 等共计十二个档案)

将这些档案内的特定栏位资料读取出来,塞入另一个固定栏位格式的Excel

然而小弟想透过NPOI合併多个Excel成为一个名为 ABC_2024 的新创Excel,

并读取 ABC_2024的特定栏位至DataTable,

将DataTable里的资料依照格式塞入另一个新创固定格式的Excel,

但不知道如何撰写程式,想寻求各位大大协助,感谢

1 个回答

1

alien663

iT邦研究生 3 级 ‧ 2025-02-20 08:32:16

首先你要先定义出可以解决问题的流程,不牵涉写程式,先想想手动的话你要怎么做

  1. 建立excel命名为ABC_2024
  2. 打开ABC_2024_01
  3. 複製资料到ABC_2024

其实程式码要做的事情也是一样的

string path = @"D:\\Test"
DirectoryInfo excelLocation = new DirectoryInfo(@"D:\\Test");
DataTable result = new DataTable();
using ExcelConverter excel = new ExcelConverter();
foreach (FileInfo _file in excelLocation.GetFiles("*.xlsx"))
{
    FileStream fs = new FileStream(_file.FullName, FileMode.Open, FileAccess.Read);
    DataTable temp = new DataTable();
    temp = excel.readFileDT(fs);

    #region Combine your data here
    result.Merge(temp);
    #endregion
    
    fs.Close();
}
byte[] data = excel.export(result);
using FileStream fs2 = File.Create(path + Path.DirectorySeparatorChar + "result.xlsx")

里面的ExcelConverter是我自己写的Library
Alien663 GitHub