![]() |
Новый проект: парсим 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 – если я не буду занят, то с удовольствием вам помогу. ![]() |
Мои услуги
|
© upread.ru 2013-2019 При перепечатке активная ссылка на сайт обязательна. |