簡體   English   中英

從C#生成excel時出錯

[英]Error while generating excel from C#

我有簡單的代碼生成Excel循環和生成excel表。

        Excel.Application XlApp = null;
        Excel.Workbook workbook = null;
        Excel.Worksheet Ws = null;

        XlApp = new Excel.Application();
        XlApp.Visible = true;
        workbook = XlApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
        Ws = (Excel.Worksheet)workbook.Worksheets[1];

        workbook.Worksheets.Add(Missing.Value,Missing.Value,  
        6, Missing.Value);

        for (int j = 0; j < 7; j++)
        {
             Ws = (Excel.Worksheet)workbook.Worksheets[j];
             Ws.Activate();
             Ws.Name = SheetName.ToString();//Sheetname has a Name 
        }

現在問題是當我們運行此代碼時,一切正常。 但有時會發生什么,在客戶端,沒有生成其中一個工作表名稱,它會跳過。 因此我們對它們的解決方案是嘗試再次生成工作表然后它工作正常,所以我的問題是為什么代碼跳過sheetName( 有時 ),盡管代碼中沒有問題。 是否必須對客戶端其他正在運行的進程執行任何操作?

嘗試這個:

Excel.Application XlApp = null;
Excel.Workbook workbook = null;
Excel.Worksheet Ws = null;

XlApp = new Excel.Application();
XlApp.Visible = true;
workbook = XlApp.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);

// here you get the first ws, index 1
Ws = (Excel.Worksheet)workbook.Worksheets[1];

workbook.Worksheets.Add(Missing.Value, Missing.Value,
6, Missing.Value);

var SheetName = "sheet_";
// here you should start from 1 (not from 0) and include 7 in the loop count
for (int j = 1; j <= 7; j++)
{
    // make sure that the ws name is unique
    SheetName=String.Format("sheet_{0}",j);
    Ws = (Excel.Worksheet)workbook.Worksheets[j];
    Ws.Activate();
    Ws.Name = SheetName;// this is already a string
}

XlApp.Quit();

暫無
暫無

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

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