写入Excel单元格时出现异常

时间:2015-11-18 15:42:39

标签: c# excel exception visual-studio-2008

我有一个listview,我正在尝试将listview中的数据保存到Excel工作簿。 ws.Cells[row,col]行发生异常。这是我的代码:

using Excel = Microsoft.Office.Interop.Excel;
...
Excel.Application xl = new Excel.Application();
xl.Visible = false;
Excel.Workbook wb = (Excel.Workbook)xl.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
Excel.Worksheet ws = (Excel.Worksheet)wb.ActiveSheet;

for (int row = 0; row < listView1.Items.Count; row++)
{
    ListViewItem item = listView1.Items[row];

    for (int col = 0; col < item.SubItems.Count; col++)
    {
        ws.Cells[row,col] = item.SubItems[col].Text.ToString(); // exception here
        //ws.Cells[row,col] = "Test"; // I've tried this too
    }
 }

例外是:

  

System.Runtime.InteropServices.COMException(0x800A03EC)

我已经对错误代码进行了一些研究,但我只能找到试图保存文件的人的问题。我还没有保存文件,我得到了例外。

2 个答案:

答案 0 :(得分:1)

Excel单元格是1-base索引,请尝试:

ws.Cells[row + 1,col + 1] = item.SubItems[col].Text.ToString();

答案 1 :(得分:0)

Cells索引器是一个基于一个而不是从零开始(所以A1[1, 1]

for (int row = 1; row <= listView1.Items.Count; row++)
...
   for (int col = 1; col <= item.SubItems.Count; col++)