На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Новый проект: парсим 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 – если я не буду занят, то с удовольствием вам помогу.




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





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




Java: сворачивание в трей
Как улучшить настроение


© upread.ru 2013-2019
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.