扩展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函数参数中得到的对象的数量。

怎么做?

谢谢。

扩展Excel工作表范围

由于您正在使用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++;
}