如何将值设置为Excel工作表单元格

时间:2018-03-09 16:15:09

标签: c#

我正在尝试从A列和第二个Excel工作表行开始设置Excel工作表特定单元格。我写了以下代码:

if (!File.Exists(AppConfiguration.FilePath))
{
    throw new FileNotFoundException("File Not Found. The requested template.xlsx was not found on the server");
}

Microsoft.Office.Interop.Excel.Application xlsx = new Microsoft.Office.Interop.Excel.Application();
Workbook workbook = null;

try
{
    workbook = xlsx.Workbooks.Open(AppConfiguration.FilePath, ReadOnly: false, Editable: true);
    Worksheet worksheet = workbook.Worksheets[1];
    Microsoft.Office.Interop.Excel.Range cells = worksheet.Cells["$A"];
    List<Analytics> list = (List<Analytics>)data;

    for (int i = 0; i < list.Count; i++)
    {
        ((Microsoft.Office.Interop.Excel.Range)cells[i + 1, 0]).Value = list[i].ProductShare;
        ((Microsoft.Office.Interop.Excel.Range)cells[i + 1, 1]).Value = list[i].MarketPotential;
    }

    workbook.Save();
}
catch(Exception e)
{
    throw new Exception("Error while processing file");
}
finally
{
    workbook.Close(SaveChanges: true);
    xlsx.Quit();
    Marshal.ReleaseComObject(workbook);
}

但是,我总是在

得到一个例外
(Microsoft.Office.Interop.Excel.Range)cells[i + 1, 0]).Value = list[i].ProductShar

2 个答案:

答案 0 :(得分:0)

在Excel中,索引从1开始,因此cells[i + 1, 0]无效,请改用cells[i + 2, 1]

答案 1 :(得分:0)

for(int i = 0; i< list.Count; i++)
{
   worksheet.Range[string.Format("A{0}", i + 2].Value = list[i].val;
}

从A2开始,我开始在我的列表中写下我正在寻找的值!感谢大家的时间和考虑!