1

以下は、既存のExcelファイルを読み取るための私のコードです。

FileInfo newFile = new FileInfo("C:\\Excel\\SampleStockTakeExceptionReport.xlsx");
using (ExcelPackage xlPackage = new ExcelPackage(newFile))
{
    var ws = xlPackage.Workbook.Worksheets.Add("Content");
    ws.View.ShowGridLines = false;
    ws.Column(4).OutlineLevel = 1;
    ws.Column(4).Collapsed = true;
    ws.Column(5).OutlineLevel = 1;
    ws.Column(5).Collapsed = true;
    ws.OutLineSummaryRight = true;
    //Headers
    ws.Cells["B1"].Value = "Name";
    ws.Cells["C1"].Value = "Size";
    ws.Cells["D1"].Value = "Created";
    ws.Cells["E1"].Value = "Last modified";
    ws.Cells["B1:E1"].Style.Font.Bold = true;
    System.Diagnostics.Process.Start("C:\\Excel\\SampleStockTakeExceptionReport.xlsx");
}

コードを実行している間。ランタイムエラーをスローします。
エラー。

System.InvalidOperationException: A worksheet with this name already exists in the workbook
at OfficeOpenXml.ExcelWorksheets.Add(String Name)
at Report.Form1.ExportToExcel1(DataTable Tbl, String ExcelFilePath) in C:\SMARTAG_PROJECT\SUREREACH\EXCEL\Report\Report\Form1.cs:line 43     
4

1 に答える 1

7

それはかなり簡単です:

  • 最初にワークシートが存在するかどうかを確認し、存在しない場合にのみコードを実行します
  • 既存のワークシートが存在する場合はそれを削除し、値を追加してください
  • 既存のワークシート「コンテンツ」のこれらの値を変更します

多分このようなことを試してください:

FileInfo newFile = new FileInfo("C:\\Excel\\SampleStockTakeExceptionReport.xlsx");
using (ExcelPackage xlPackage = new ExcelPackage(newFile))
{
    //Check if worksheet with name "Content" exists and retrieve that instance or null if it doesn't exist       
    var ws = xlPackage.Workbook.Worksheets.FirstOrDefault(x => x.Name == "Content");
    //If worksheet "Content" was not found, add it
    if (ws == null)
    {
       ws = xlPackage.Workbook.Worksheets.Add("Content");
    }

    //Rest of code 
}
于 2013-01-03T08:35:40.130 に答える