簡體   English   中英

是否可以將多個.xls文件附加到沒有Office Interop的單個Excel 2003工作表中?

[英]Is it possible to append multiple .xls files into a single Excel 2003 worksheet without Office Interop?

我有一個ASP.NET Web API,需要為將來的版本實現此功能。 特別:

  • 幾個.xls文件將放在一個臨時文件夾中。 它們具有相同的寬度但不同的高度,以及不同的行和列尺寸。
  • 這些文件需要附加到一個.xls文件中
  • 最終的excel不能有多個工作表。
  • 無法使用Office Interop庫,因為未安裝Office且無法在部署環境中進行調度。

有沒有辦法在不使用指定的辦公室互操作圖書館或任何付費的第三方圖書館(免費的第三方圖書館受歡迎)的情況下這樣做?

NuGet安裝Spire.XLS: Install-Package Spire.XLS -Version 9.6.7

Spire.XLS提供了兩種將Excel文件合並到一個excel工作表中的方法:

1.使用CellRange.Copy()將excel與樣式合並

static void Main(string[] args)
{
    string outputPath = "‪output.xls";
    List<string> files = new List<string>();
    files.Add(@"File1.xls");
    files.Add(@"File2.xls");
    CombineFiles(files, outputPath);
}
private static void CombineFiles(List<string> files, string outputPath)
{
    Spire.Xls.Workbook resultworkbook = new Spire.Xls.Workbook();
    resultworkbook.Worksheets.Clear();
    Spire.Xls.Worksheet resultworksheet = resultworkbook.Worksheets.Add("worksheet");

    Spire.Xls.Workbook workbook = new Spire.Xls.Workbook();
    for (int i = 0; i < files.Count; i++)
    {
        workbook.LoadFromFile(files[i]);
        Worksheet sheet = workbook.Worksheets[0];
        if (i == 0)
        {
            sheet.AllocatedRange.Copy(resultworksheet.Range[1, 1], true, true);

        }
        else
        {
            sheet.AllocatedRange.Copy(resultworksheet.Range[resultworksheet.LastRow + 1, 1], true, true);
        }
    }


    resultworkbook.SaveToFile(outputPath, ExcelVersion.Version97to2003);
}

參考: 如何將多個工作表合並到具有樣式的單個工作表

2.使用DataTable合並沒有樣式的excel

Workbook workbook1 = new Workbook();
//load the first workbook
workbook1.LoadFromFile(FilePath1);
//load the second workbook
Workbook workbook2 = new Workbook();
workbook2.LoadFromFile(FilePath2);
//load the third workbook
Workbook workbook3 = new Workbook();
workbook3.LoadFromFile(FilePath3);

//import the second and third workbook's first worksheet into the first workbook using datatable
Worksheet sheet1 = workbook1.Worksheets[0];
Worksheet sheet2 = workbook2.Worksheets[0];
Worksheet sheet3 = workbook3.Worksheets[0];

DataTable dataTable1 = sheet2.ExportDataTable();
DataTable dataTable2 = sheet3.ExportDataTable();

sheet1.InsertDataTable(dataTable1, false, sheet1.LastRow + 1, 1);
sheet1.InsertDataTable(dataTable2, false, sheet1.LastRow + 1, 1);

workbook1.SaveToFile(OutputPath + "Merged.xls", ExcelVersion.Version97to2003);

參考: 如何使用C#將來自不同Excel文件的3個表合並到一個表中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM