Сколько я ни искал, всё как-то уж больно сложно и избыточно функционально...
А я хотел максимальной простоты — работать с таблицей как с двумерным массивом строк.
Ответ к которому я пришел - внизу :)
Полная поддержка CSV должна в себя включать:
Здесь я написал очень простую библиотеку на основе ClosedXML для того, чтобы не задумываясь иметь возможность работать с таблицами MS Excel как с двумерным массивом: что может быть легче в использовании?
Пример конечного кода для работы с моим классом:
Excel xl = new Excel(); //создаем инстанс
xl.FileOpen("c:\\file1.xlsx"); //открываем файл
var row1Cell6Value = xl.Rows[0][5]; //вытягиваем значение из 1 строки 6й ячейки
xl.AddRow("asdf","asdffffff","5"); //добавляем еще одну строку с 3мя ячейками
xl.FileSave("c:\\file2.xlsx"); //сохраняем файл
Фактически, это и есть все методы — аскетский минимализм :)
Если нужно написать формулу, можно использовать следующий код:
var widthAdress = Excel.GetExcelPos(0, 1);
var heightAdress = Excel.GetExcelPos(0, 2);
xl.Rows[0][0] = String.Format("={0}*{1}", widthAdress , heightAdress);
CSV:
И абсолютно с тем же подходом аскетизма есть не менее простая либа для работы с CSV файлами как с двумерным массивом данных.
Csv csv = new Csv(); //создаем инстанс читалки
csv.FileOpen("c:\\file1.csv"); //открываем файл
var row1Cell6Value = csv.Rows[0][5]; //читаем 6ю ячейку 1й строки
csv.AddRow("asdf","asdffffff","5"); // добавляем строку из 3х ячеек
csv.FileSave("c:\\file2.csv"); // сохраняем файл
Актуальный код обоих классов вы найдете здесь: https://github.com/ukushu/DataExporter
Теперь немного отступим что бы рассказать почему мой код написан именно так, а не иначе
Этот блок будет полезен тем, кому будет мало моей либы, и кто хочет больше возможностей в работе с Microsoft Excel.
Сначала я пытался работать с Excel-файлами при помощи Microsoft.Office.Interop.Excel, который по факту:
Считаю очень неудачным решением через него взаимодействовать.
Потом я пытался работать через OleDB. Этот путь привел меня в никуда просто по той причине, что там невозможно работать с формулами. Считать формулу ты не можешь — только записать. В целом этот путь явно лучше, быстрее и приятнее, но отсутствие возможности править формулы меня очень огорчало.
И так я пришел к OpenXML. Как следствие — тоже относительно печальный опыт. Работать с ним просто-напросто неудобно. Не знаю, чем авторы думали.
И я пришел к конечному решению — обертки вокруг OpenXML - ClosedXML. Это решение уже позволило написать:
Важные минуса:
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости