从C#生成Excel时出错

我有简单的代码生成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 } 

现在的问题是,当我们运行这个代码一切工作正常。 但是有时候会发生什么,在客户端,一个表名没有被生成,就会跳过。 所以我们的解决scheme是尝试再次生成工作表,然后工作正常,所以我的问题是为什么代码跳过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();