Я начинаю задаваться вопросом, возможно ли это вообще. Я искал решения в Google и не нашел ничего, что работало бы именно так, как мне бы хотелось.
Думаю, было бы полезно объяснить, что это влечет за собой. Я работаю в группе баз данных ИТ-отдела своего университета. Моя основная работа - взять спецификации отчета в файле docx, скопировать их в Dreamweaver, исправить некоторое форматирование и разместить на своем веб-сайте. Моя проблема в том, что делать это снова и снова до смешного утомительно. Я подумал, эй, я уже какое-то время ничего не писал на C #, возможно, я мог бы написать приложение, чтобы захватить файл docx, преобразовать его в HTML, исправить CSS, прикрепить верхний и нижний колонтитулы с веб-страницы там и сохраните результат. Изначально я планировал делать это один за другим, но, вероятно, не составит труда ввести список файлов и выполнить пакетное преобразование.
Я нашел эти актуальные темы о том, как это сделать, но они недостаточно хорошо подходят для моих нужд.
http://www.techrepublic.com/blog/howdoi/how-do-i-modify-word-documents-using-c/190
Это, вероятно, подходит для некоторых документов, но, поскольку это просто автоматизация экземпляра Word, я чувствую, что это будет медленным и требует большого объема памяти. Я бы предпочел избегать открытия и закрытия экземпляра Word более 50 раз.
http://openxmldeveloper.org/articles/333.aspx
Это то, что я начал использовать. XSLT имел преимущество в том, что не нужно было устанавливать или запускать word для каждого файла. После некоторых поисков я получил доказательство работоспособности концепции. Он принимает файл docx, распаковывает его, извлекает из него файл document.xml и использует файл DocX2Html.xsl, который я извлек из программы просмотра OpenXML. Я считаю, что изначально это было предоставлено MS для серверов sharepoint, чтобы обеспечить возможность отображать текстовые документы в браузере. Или что-то вдоль этих линий.
После корректировки этого кода в соответствии с моими потребностями и возникновения проблем с методом objXSLT.Load () я в конечном итоге использовал IlMerge для преобразования XSL в DLL. Понятия не имею, почему я продолжал получать ошибку компиляции при использовании простого старого файла XSL, но DLL работала нормально, так что я остался доволен. Здесь (http://pastebin.com/a5HBAakJ) мой текущий код. Он отлично справляется с задачей преобразования docx в HTML (кроме случайных пробелов между некоторыми словами), но файл результатов имеет до смешного уродливый синтаксис HTML. Пример этого чудовища можно найти здесь (http://pastebin.com/b8sPGmFE).
Кто-нибудь знает, как я могу это исправить? Я думаю, что, возможно, мне нужно создать новый файл XSL, поскольку предоставленный MS - это то, что отвечает за вставку всех этих тегов и дополнительного кода в него. Моя проблема в том, что я ничего не знаю о том, как это сделать. Возможно, уже существует альтернативная версия. Все, что мне нужно, это тот, который сохранит таблицы и форматирование текста. Изображения не нужны.