Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从C生成excel时出错#_C#_Visual Studio 2010_Excel - Fatal编程技术网

C# 从C生成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的简单代码,可以循环并生成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 
        }
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{}
语句包装你的代码吗?