C# 为未知列数设置Excel范围
如您所见,从第4列生成的列名称的数量是未知的。如何设置范围,以便应用样式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;
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];