首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 讀取文本文件並寫入 Excel 的兩種主流方案

     編輯:程式設計綜合問答

方案一:OLEDB / ACE 驅動(適合 .xls/.xlsx,無需安裝 Office)

string connStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=output.xlsx;Extended Properties='Excel 12.0 Xml;HDR=YES;'";
using (OleDbConnection conn = new OleDbConnection(connStr)) {
    conn.Open();
    // 建表
    new OleDbCommand("CREATE TABLE [Sheet1] (Col1 TEXT, Col2 INT, Col3 DATE)", conn).ExecuteNonQuery();
    // 批量插入
    string[] lines = File.ReadAllLines("data.txt");
    foreach (var line in lines) {
        var parts = line.Split(',');
        string sql = $"INSERT INTO [Sheet1] VALUES ('{parts[0]}', {parts[1]}, '{parts[2]}')";
        new OleDbCommand(sql, conn).ExecuteNonQuery();
    }
}

注意:需安裝 Access Database Engine(32/64 位與程序一致)。

方案二:EPPlus / NPOI(純 .NET 庫,推薦現代項目)

EPPlus (商業友好授權):

using (var package = new ExcelPackage(new FileInfo("output.xlsx"))) {
    var ws = package.Workbook.Worksheets.Add("Sheet1");
    string[] lines = File.ReadAllLines("data.txt");
    for (int i = 0; i < lines.Length; i++) {
        var parts = lines[i].Split(',');
        for (int j = 0; j < parts.Length; j++)
            ws.Cells[i+1, j+1].Value = parts[j];
    }
    package.Save();
}

NPOI (Apache 2.0,支持 .xls/.xlsx):

IWorkbook wb = new XSSFWorkbook(); // .xlsx 用 XSSF, .xls 用 HSSF
ISheet sheet = wb.CreateSheet("Sheet1");
string[] lines = File.ReadAllLines("data.txt");
for (int i = 0; i < lines.Length; i++) {
    IRow row = sheet.CreateRow(i);
    var parts = lines[i].Split(',');
    for (int j = 0; j < parts.Length; j++)
        row.CreateCell(j).SetCellValue(parts[j]);
}
using (var fs = File.Create("output.xlsx")) wb.Write(fs);

選型建議

場景推薦
簡單導出、無 Office 環境、.NET Core/5+EPPlus / NPOI
需兼容老舊 .xls、或系統已裝 Access EngineOLEDB
超大數據量(百萬行)NPOI SXSSF (流式寫入)

避免直接操作 COM 組件(Microsoft.Office.Interop.Excel),服務端部署極其痛苦且不穩定。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved