2013-05-29 32 views
3

我有用於生成循環並生成Excel表單的Excel的簡單代碼。從C生成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(有時),雖然代碼沒有問題。它是否需要對客戶其他正在運行的進程執行任何操作?

+0

什麼是'SheetName'對象? –

+0

這是一個String對象 – Rohit

+0

交換兩行。首先分配sheetname並激活它。 – MahaSwetha

回答

0

試試這個:

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(); 
+0

但是爲什麼在其他時間工作 – Rohit

+0

它在同一臺計算機上工作嗎? –

+0

是的,它可以在同一臺計算機上運行 – Rohit