如你所见,没有。列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;
}
答案 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方法。