C# 为未知列数设置Excel范围

C# 为未知列数设置Excel范围,c#,office-interop,C#,Office Interop,如您所见,从第4列生成的列名称的数量是未知的。如何设置范围,以便应用样式 using Microsoft.Office.Interop; using Excel = Microsoft.Office.Interop.Excel; private void OpenExcel() { Excel.Application app = new Excel.Application(); Excel.Workbook wb = null; Excel.Worksheet ws = null;

如您所见,从第4列生成的列名称的数量是未知的。如何设置范围,以便应用样式

using Microsoft.Office.Interop;
using Excel = Microsoft.Office.Interop.Excel;
private void OpenExcel()
{
  Excel.Application app = new Excel.Application();
  Excel.Workbook wb = null;
  Excel.Worksheet ws = null;
  Excel.Range range = null;

  app.visible = true;
  wb = app.Workbooks.Add(1);
   ws = (Excel.Worksheet)wb.WorkSheets[1];
   //range = ws.get_Range("A1","D1");

   ws.Cells[1,1]="Date";
   ws.Cells[1,2]="Code";
   ws.Cells[1,3]="Name";

   IEnumerable<tblCountry> tbl = objDAL.GetRecords();
   int i=4;
   foreach(var item in tbl)
   {
     ws.Cells[1,i] = item.TypeCode;
     i++;
   }
   range.Borders.Color = System.Drawing.Color.Black.ToArgb();
   range.Interior.Color = System.Drawing.Color.PeachPuff.ToArgb();
   range.Font.Bold = true;
}
只需使用3+tbl。是否将计数作为最后一列

//remember to initialise tbl first
IEnumerable<tblCountry> tbl = objDAL.GetRecords();
range=ws.get_Range((Excel.Range)ws.Cells[1, 1], (Excel.Range)ws.Cells[1, 3 + tbl.Count()]);
按如下所示使用结束函数选择包含所有列的行

range = ws.Range("A1").End(xlToLeft).Select
然后执行样式操作

   range.Borders.Color = System.Drawing.Color.Black.ToArgb();
   range.Interior.Color = System.Drawing.Color.PeachPuff.ToArgb();
   range.Font.Bold = true;
在本例中,起始范围地址是A1,但我确信在生产代码中,范围地址将作为参数或来自变量

有关范围选择操作的详细列表,请参见此处


在C中的这个互操作中,您几乎可以使用这些VBA方法中的任何一种。

应该是[A1]吗?而且,我没有得到xlToLeft.range=ws.range[A1].End[Excel.XlDirection.xlToLeft].Select;给出错误,无法将布尔值转换为范围。那么应该有什么呢?它说,对象不包含“get_Range”的定义……int count=3+tbl.count;range=ws.get_Rangews.Cells[1,1],ws.Cells[1,count]@Ruby,你的ws是什么,get_Range是Wooksheet的一个方法:Excel.Worksheet ws=null;ws=Excel.Worksheetwb.WorkSheets[1];