C# запись в Exel-файл. Независимость от версий Microsoft Office

261
29 марта 2017, 14:01

Нужно записать данные в таблицу ексель. Делаю вот так:

Excel.Application exApp = new Excel.Application();
exApp.Visible = true;
exApp.Workbooks.Add();
Worksheet workSheet = (Worksheet)exApp.ActiveSheet;
workSheet.Cells[1, 1] = "№";
workSheet.Cells[1, 2] = "Имя студента";
workSheet.Cells[1, 3] = "Группа";
workSheet.Cells[1, 4] = "Средний балл";
int rowExcel = 2;
for (int i = 0; i < NGrants; i++)
{
    workSheet.Cells[rowExcel, "A"] = dgv.Rows[i].Cells[0].Value;
    workSheet.Cells[rowExcel, "B"] = dgv.Rows[i].Cells[1].Value;
    workSheet.Cells[rowExcel, "C"] = dgv.Rows[i].Cells[2].Value;
    workSheet.Cells[rowExcel, "D"] = dgv.Rows[i].Cells[4].Value;
    ++rowExcel;
}
workSheet.SaveAs("MyFile.xls");`

На моем компьютере все работает, но на компьютере заказчика выдает unhandled exception, даже не запускает ексель. Что это? Что-то с версиями екселя связано? И как можно "малой кровью" исправить, чтоб для любой версии работало?

Answer 1

При создании Excel.Application() обворачиваем вызов через try...catch и выводим текст ошибки.

А для кроссплатформенности лучше писать данные не в XLS, а в CSV формат, определив разделители (например, ";") и добавить первой строкой в CSV текст "sep=;"

CSV файл откроется чем угодно, включая блокнот, это обычный текстовик. В Excel же откроется как таблица.

Как пример файла:
sep=;
a;b;vc;d;edf
d;e;f;dfg;h
v;f;dft;g;j

READ ALSO
400 bad request php

400 bad request php

Хочу отправить запрос, на создание поста в группе вк, вчера буквально работал, сейчас выдает 400 bad requestСамое главное, что если вывожу переменную...

323
Вечный цикл + cron реально?

Вечный цикл + cron реально?

Всем добрый вечерЗапускаю скрипт через cron каждую минуту

238
Роуты для регистрации. Laravel 5.4

Роуты для регистрации. Laravel 5.4

Как должны выглядеть маршруты для регистрации:

395