2012-06-28 4 views
4

Я использую Microsoft.Office.Interop.Excel в winform, где я читаю один файл excel, обрабатывая данные и выводя новый файл excel. Однако у меня возникают проблемы с записью в ячейки - в частности, для добавления заголовков столбцов. Вот код:C# COM Interop: Запись в ячейку в листе Excel

Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); 
Workbook wb = xlApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet); 
Worksheet ws = (Worksheet)wb.Worksheets[1]; 
for (int i = 0; i < dt.Columns.Count; i++) 
{ 
    for (int j = 0; j < dt.Rows.Count; j++) 
    { 
     ws.Cells[j + 1, i] = dt.Rows[j][i].ToString(); 
    } 
} 
ws.Cells[0, 0] = "Ticket Number"; 
ws.Cells[0, 1] = "Transit"; 
ws.Cells[0, 2] = "Outage Start Date"; 
ws.Cells[0, 3] = "Outage End Date"; 
ws.Cells[0, 4] = "Business Impact"; 
wb.Worksheets.Add(ws); 

где «dt» - это мой DataTable. Вложенный цикл for не генерирует ошибку времени выполнения, а код, следующий за ним. Ошибка просто говорит: COM Exception был необработанным, Исключение из HRESULT: 0x800A03EC.

Любые советы приветствуются.

С уважением.

+0

Я только что обнаружил, что если я прокомментирую оскорбительные строки, программа запускает и выводит файл. Однако, когда я пытаюсь открыть его, он немедленно закрывается, и я не могу удалить его впоследствии, потому что Windows утверждает, что Excel его использует, хотя я не могу найти приложение Excel в Диспетчере задач. – Kevin

+0

Когда вы говорите в диспетчере задач, вы проверили вкладку процессов и вкладку приложений? Легко закончить с запасными процессами excel.exe, висящими вокруг. Вы закрываете книгу в своем объекте приложения excel или, по крайней мере, закрываете приложение приложения Excel? – Rup

+0

Я смотрел только на вкладке «Приложение». – Kevin

ответ

8

Cells[] 1 основанный, не основанный на нуле.

+0

+ 1 Nice Catch! –

+0

Сохранено. Благодарю. – ZygoteInit

Смежные вопросы