扩展Excel工作表范围
本文关键字:范围 工作 Excel 扩展 | 更新日期: 2023-09-27 18:11:54
我需要用c#代码创建一个Excel文件。
我是按照microsoft/msdn https://msdn.microsoft.com/en-us/library/ms173186(v=vs.80).aspx推荐的方式做的
在msdn示例中,单元格范围是固定的:
// Select the Excel cells, in the range c1 to c7 in the worksheet.
Range aRange = ws.get_Range("C1", "C7");
if (aRange == null)
{
Console.WriteLine("Could not get a range. Check to be sure you have the correct versions of the office DLLs.");
}
// Fill the cells in the C1 to C7 range of the worksheet with the number 6.
Object[] args = new Object[1];
args[0] = 6;
aRange.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, aRange, args);
但是在我的函数中我写的是
public void Create ExcelFile(List<string> strList);
我需要将行数增加到我在List函数参数中得到的对象的数量。
怎么做?
谢谢。
由于您正在使用List类型的对象(根据您的要求),您可以保持起始范围恒定,即,在这种情况下"C1"和结束范围可以是集合列表中字符串值的计数。
在以List<string> strList
为输入的方法CreateExcelFile
中,获得如下所示的enrange,当您获得Range时可以使用相同的enrange。
string endRange = string.Concat("C", strList.Count.ToString());
Range aRange = ws.get_Range("C1", endRange);
我希望这能解决你的问题。
我找到了答案。
这是我的代码:
int i = 1;
foreach (ItemDetailsPrice item in strList)
{
//xlWorkSheet.Cells[i, 0] = new Cell("Code");
aRange = (Excel.Range)xlWorkSheet.Cells[i, 1];
args[0] = plant;
aRange.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, aRange, args);
aRange = (Excel.Range)xlWorkSheet.Cells[i, 2];
args[0] = item.ItemCode;
aRange.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, aRange, args);
aRange = (Excel.Range)xlWorkSheet.Cells[i, 3];
args[0] = item.ItemName;
aRange.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, aRange, args);
aRange = (Excel.Range)xlWorkSheet.Cells[i, 4];
args[0] = item.ItemPrice;
aRange.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, aRange, args);
aRange = (Excel.Range)xlWorkSheet.Cells[i, 5];
args[0] = "Y";
aRange.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, aRange, args);
i++;
}