iT邦幫忙

1

詢問 c# NPOI 合併多個Excel 的特定欄位 讀取到DataTable並匯出Excel

  • 分享至 

  • xImage

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

要讀取資料夾內特定名稱的多個Excel,
(例如:Excel檔名為ABC_2024_01、ABC_2024_02 ... ABC_2024_12 等共計十二個檔案)

將這些檔案內的特定欄位資料讀取出來,塞入另一個固定欄位格式的Excel

然而小弟想透過NPOI合併多個Excel
成為一個名為 ABC_2024 的新創Excel,

並讀取 ABC_2024的特定欄位至DataTable,

將DataTable裡的資料依照格式塞入另一個新創固定格式的Excel,

但不知道如何撰寫程式,想尋求各位大大協助,感謝

jack8900 iT邦新手 1 級 ‧ 2025-02-21 16:12:53 檢舉
建議把需要的Excel資料讀取到List<T>,看是要多個List<T>或者整理好的單個List<T>都可以,透過程式碼整理好資料後再把資料塞到新建立的Excel
ruiang iT邦新手 5 級 ‧ 2025-03-03 08:18:51 檢舉
先把流程想好,寫Code 沒那麼難
1.取出Excel資料 2.塞到 List 存放 3.計算(若需要)後回寫到Excel
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
alien663
iT邦研究生 2 級 ‧ 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

我要發表回答

立即登入回答