Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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#Excel Interop)?_C#_Winforms_Excel Interop_Listobject - Fatal编程技术网

为什么这段代码在两行之间插入一个空行(C#Excel Interop)?

为什么这段代码在两行之间插入一个空行(C#Excel Interop)?,c#,winforms,excel-interop,listobject,C#,Winforms,Excel Interop,Listobject,在我使用Excel Interop的C#(.NET 4.5)Windows窗体应用程序中,我对类似的代码进行了修改(删除通过Resharper变灰的冗余内容,并在“缺少”参数之前添加“Type.”(并将其大小写改为大写): ListObject根据需要添加到第4行第1列(或“A”),并且“水果”被写入单元格,但不是从第5行(其中“Apple”应该是)开始,而是从第6行开始,正如您在这里看到的(不需要的空白行突出显示): 它可能有很多(更多),但这可能至少是ListObject不知道排序和筛选内

在我使用Excel Interop的C#(.NET 4.5)Windows窗体应用程序中,我对类似的代码进行了修改(删除通过Resharper变灰的冗余内容,并在“缺少”参数之前添加“Type.”(并将其大小写改为大写):

ListObject根据需要添加到第4行第1列(或“A”),并且“水果”被写入单元格,但不是从第5行(其中“Apple”应该是)开始,而是从第6行开始,正如您在这里看到的(不需要的空白行突出显示):

它可能有很多(更多),但这可能至少是ListObject不知道排序和筛选内容的部分原因,单击它时提供的选项证明了这一点,如下图所示:


为什么要添加一个空白行5,我怎样才能防止呢?

当您从一个范围创建一个
ListObject
,并说该表没有标题时,它会将该范围下移一行,然后添加一个
Column1
单元格

在上面的代码中,您说创建一个从
[4,1]
[4,1]
的表,您说该表没有标题,所以它创建一个只有一行的表,并添加一个
Column1
标题,然后将所有内容向下移动一行。因此,结果就是您对excel所说的为您所做的

您可以通过指定正确的范围并说您有一个标题来更正它

在下面的代码中,我首先在
[4,1]
处添加
标题,然后添加水果,最后创建从
[4,1]
[14,1]
的列表,并说该表有标题。因此它保留了标题

using XL = Microsoft.Office.Interop.Excel;

private void button1_Click(object sender, EventArgs e)
{
    XL.Application application = new XL.Application();
    application.Visible = true;
    XL.Workbook book = application.Workbooks.Add();
    XL.Worksheet sheet = (XL.Worksheet)book.Worksheets[1];
    sheet.Cells[4, 1] = "Header";
    sheet.Cells[5, 1] = "Apple";
    sheet.Cells[6, 1] = "Strawberry";
    sheet.Cells[7, 1] = "Cashew";
    sheet.Cells[8, 1] = "Kumquat";
    sheet.Cells[9, 1] = "Pomegranate";
    sheet.Cells[10, 1] = "Banana";
    sheet.Cells[11, 1] = "Pineapple";
    sheet.Cells[12, 1] = "Kiwi";
    sheet.Cells[13, 1] = "Huckleberry";
    sheet.Cells[14, 1] = "Gooseberry";

    XL.ListObject fruitList = 
        sheet.ListObjects.Add(XL.XlListObjectSourceType.xlSrcRange,
            sheet.Range[sheet.Cells[4, 1], sheet.Cells[14, 1]], 
                Type.Missing, XL.XlYesNoGuess.xlYes);
}

提供给ListObjects的范围。Add方法是4-4。尝试将其更改为5-14?当您从一个范围创建一个
ListObject
并说该表没有标题时,它会将该范围下移一行并添加一个
Column1
单元格。在上面的代码中,您说创建一个表从[4,1]到[4,1]你说你没有标题,所以它创建了一个只有一行的表,添加了一个
Column1
标题,并将所有内容向下移动了一行。结果就是你对excel所说的。你可以通过指定正确的范围并说你有标题来纠正它。我根据这条评论发布了一个答案。谢谢,Reza!你让我想起了分形,因为你擅长excel。
using XL = Microsoft.Office.Interop.Excel;

private void button1_Click(object sender, EventArgs e)
{
    XL.Application application = new XL.Application();
    application.Visible = true;
    XL.Workbook book = application.Workbooks.Add();
    XL.Worksheet sheet = (XL.Worksheet)book.Worksheets[1];
    sheet.Cells[4, 1] = "Header";
    sheet.Cells[5, 1] = "Apple";
    sheet.Cells[6, 1] = "Strawberry";
    sheet.Cells[7, 1] = "Cashew";
    sheet.Cells[8, 1] = "Kumquat";
    sheet.Cells[9, 1] = "Pomegranate";
    sheet.Cells[10, 1] = "Banana";
    sheet.Cells[11, 1] = "Pineapple";
    sheet.Cells[12, 1] = "Kiwi";
    sheet.Cells[13, 1] = "Huckleberry";
    sheet.Cells[14, 1] = "Gooseberry";

    XL.ListObject fruitList = 
        sheet.ListObjects.Add(XL.XlListObjectSourceType.xlSrcRange,
            sheet.Range[sheet.Cells[4, 1], sheet.Cells[14, 1]], 
                Type.Missing, XL.XlYesNoGuess.xlYes);
}