Новый проект: парсим docx и пишем в xlsx


Недавно завершил работу над еще одним очень интересным проектом по программированию. Задача заключалась в том, чтобы извлечь данные (распарсить файл) из docx файла, а затем записать их в формат Excel – записать в файл xlsx. С разрешения заказчика выкладываю здесь основные этапы работы над данной программой.

Итак, как обычно, большую задачу мы делим на подзадачи. Что нам требуется? Для начала надо прочитать (распарсить) docx файл с помощью Visual Studio C#. Подключаем требуемые библиотеки:

using Word = Microsoft.Office.Interop.Word;
using Office = Microsoft.Office.Core;
Не забываем также добавить ссылки в проект: «Добавить ссылку» -> Microsoft Word 14.0 Object Library. Теперь надо прочитать docx:

string doc = OpenWord(Path.GetFullPath("incoming.docx"));
Обратите внимание на метод Path.GetFullPath – в принципе, если исполняемый файл программы и тот, который надо прочитать, лежат в одном каталоге, то часто можно обойтись и без него. Но иногда бывает и так, что выполняется приложение в другом каталоге, хотя сам файл программы лежит в этом же месте. Так что я рекомендую всегда использовать Path.GetFullPath.

Прочитали мы весь файл в переменную, но это не интересно – как с такой большой информацией работать? Правильно, разобьем её на строки.

string[] lines = Regex.Split(doc, "\r");
Теперь мы получили массив строк, которые уже можно обрабатывать. Предположим, что наш файл incoming.docx имеет вот такое содержание:



То есть в каждой строке мы имеем три отдельных значения разделенных табуляцией. Нам требуется каждое из этих значений записать в отдельную ячейку. Для этого мы воспользуемся снова методом Split:

string[] zn = Regex.Split(lines[0], "\t");
Итак, теперь у нас есть массив со значениями строки. Теперь надо его записать в Excel. Здесь мы тоже не будем изобретать велосипед и воспользуемся таким замечательным классом, как Excel – скачать Excel.cs можно здесь. В комментариях исходного кода класса должно быть все понятно. Просто добавьте его в проект. Теперь код создания, записи и сохранения:

Excel exl = new Excel();
exl.NewDocument();
exl.SetValue("A1", zn[0]);
exl.SetValue("B1", zn[1]);
exl.SetValue("C1", zn[2]);
exl.SaveDocument(Path.GetFullPath("outgoing.xlsx"));
exl.CloseDocument();
Что делает этот кусок кода? Мы создаем объект класса Excel, создаем новый документ, устанавливаем значения в ячейки из массива, сохраняем документ и закрываем его. Вызов последнего метода требуется по двум причинам: во-первых, у вас останется в процессах висеть эксель, а во-вторых, получившийся файл будет доступен только для чтения. В итоге мы получим что-то типа этого:



Вот так работает алгоритм. В реальном использовании вам сначала необходимо будет создать или открыть файл Excel, а затем в цикле читать и записывать значения. Могут возникнуть и другие сложности, но общая последовательность действий именно такая.

Таким образом, мы прочитали файл docx, разбили его на строки, а каждое отдельное значение записали в ячейку xlsx файла. Если вам требуется написание программы на заказ недорого, то вы всегда можете написать мне на почту up777up@yandex.ru – если я не буду занят, то с удовольствием вам помогу.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, си шарп, docx, xlsx




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.



Чудесные шишки
Урок 7. Простая отправка email в Laravel через smtp
Протоколы TCP/IP