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