C# 从C生成excel时出错#
我有生成Excel的简单代码,可以循环并生成Excel工作表C# 从C生成excel时出错#,c#,visual-studio-2010,excel,C#,Visual Studio 2010,Excel,我有生成Excel的简单代码,可以循环并生成Excel工作表 Excel.Application XlApp = null; Excel.Workbook workbook = null; Excel.Worksheet Ws = null; XlApp = new Excel.Application(); XlApp.Visible = true; workbook = XlApp.Workboo
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
}
Excel.Application XlApp=null;
Excel.Workbook工作簿=null;
Excel.Worksheet Ws=null;
XlApp=new Excel.Application();
XlApp.Visible=true;
工作簿=XlApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
Ws=(Excel.Worksheet)workbook.Worksheet[1];
工作簿.工作表.添加(缺少.Value,缺少.Value,
6、缺失价值);
对于(int j=0;j<7;j++)
{
Ws=(Excel.Worksheet)workbook.Worksheet[j];
Ws.Activate();
Ws.Name=SheetName.ToString();//SheetName有一个名称
}
现在的问题是,当我们运行这段代码时,一切正常。但有时发生的情况是,在客户端,一个工作表名称没有生成,而是跳过。因此,我们的解决方案是尝试再次生成图纸,然后工作正常,
所以我的问题是,尽管代码中没有问题,但为什么代码会跳过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();
Excel.Application XlApp=null;
Excel.Workbook工作簿=null;
Excel.Worksheet Ws=null;
XlApp=new Excel.Application();
XlApp.Visible=true;
工作簿=XlApp.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
//这里是第一个ws,索引1
Ws=(Excel.Worksheet)workbook.Worksheet[1];
工作簿.工作表.添加(缺少.Value,缺少.Value,
6、缺失价值);
var SheetName=“工作表”;
//在这里,您应该从1开始(而不是从0开始),并在循环计数中包括7
对于(int j=1;j什么是SheetName
对象?它是一个字符串对象交换两行。首先分配SheetName并激活它。您确定您有多于或等于7个工作表吗?以及为什么调用activate
?尝试不使用它。嗯,在Add方法中对象计数=6,然后转到7(0,1,2,3,4,5,6)用for循环计时。试着检查一下。它在不工作的同一台计算机上工作吗?你有任何Try{}catch{}
语句包装你的代码吗?