为未知列数设置Excel范围

时间:2013-11-21 16:20:37

标签: 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;
  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;
}

2 个答案:

答案 0 :(得分:2)

只使用3+ tbl.Count()作为最后一列?

//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()]);

答案 1 :(得分:1)

使用End()功能,如下所示选择包含所有列的行。

range = ws.Range("A1").End(xlToLeft).Select

然后执行Style操作。

   range.Borders.Color = System.Drawing.Color.Black.ToArgb();
   range.Interior.Color = System.Drawing.Color.PeachPuff.ToArgb();
   range.Font.Bold = true;

此示例的起始范围地址为“A1”,但我确信在您的生产代码中,您将范围地址作为参数或来自变量。

有关Range选择操作的详细列表,请参阅此处。 http://www.ozgrid.com/VBA/ExcelRanges.htm

你可以在C#中使用这个Interop中的任何一种VBA方法。