Каков наилучший способ программно преобразовать текстовый документ со структурой таблицы в XML - PullRequest
0 голосов
/ 31 марта 2009

Итак, у меня есть этот документ Word, в котором есть целая куча таблиц, некоторые из которых довольно длинные. В некоторых случаях он охватывает много-много страниц. Мне нужно программно преобразовать эту вещь в XML.

Сначала мне сказали, что мы можем просто скопировать вставку в Excel и сохранить ее как CSV, а затем я мог бы конвертировать оттуда, что было бы довольно легко. Однако из-за форматирования некоторых полей потребуется выполнить дополнительные манипуляции с электронной таблицей после ее копирования в Excel, чтобы она выглядела правильно и чтобы CSV получался корректным.

Я должен заметить, что это дополнение для старого приложения, написанного на VB.Net 1.1 (смутное лицо) :(. Однако я обсуждаю только написание отдельного инструмента командной строки в C # 3.5, если это ' Я сделаю это проще. Похоже, в C # есть кое-что из взаимодействия с Word, которое, я сомневаюсь, было в платформе 1.1, но я не исследовал это слишком далеко.

Итак, я просто ищу лучший / самый быстрый способ, которым это может быть достигнуто. Не имеет большого значения, как это достигается, пока это достигается, и это делается программно. Некоторые шаги можно выполнить вручную, если они не слишком жесткие. Например, если сначала получить его в каком-либо другом формате, это сэкономит кучу кода и не будет слишком сложным, что было бы хорошо.

Кто-нибудь делал что-то подобное раньше? Есть идеи?

Обновление Итак, вот пример того, что мне нужно сделать.

У меня есть слово doc, которое выглядит примерно так ...

PROTOCOL:  BIRDS           

Field Name      Data Type      Required      Length      Total Digits      Fraction Digits      ValidValues/Comparison      Description
OBSERVATION_ID  Text           Yes           16          n/a               n/a                                              Unique observation identification.  Primary key. 

Итак, есть таблица с ее именем и поставщиком (в данном случае Protocol и Birds). В качестве примера у него есть только одно поле. Допустимые значения / сравнения могут иметь несколько вещей, разделенных запятыми, где каждая вещь будет заключена в теги значений внутри XML.

Теперь, что мне в основном нужно, это получить это для преобразования в этот XML ...

<?xml version="1.0" encoding="utf-8"?>
<Formats xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="Formats.xsd">
  <VendorFormats Vendor="PROTOCOL" LastModified="2005-9-13">
    <Format Name="BIRDS" Version="3" VersionDate="2005-9-10">
      <BaseTable>BIRDS</BaseTable>
      <StageTable>STAGE_BIRDS</StageTable>
      <Fields>
        <Text Name="OBSERVATION_ID" Required="Y">
          <NullValue />
          <Description>Unique observation identification.  Primary key.</Description>
          <Length>16</Length>
        </Text>
      </Fields>
    </Format>
   </VendorFormats>
 </Formats>

Всегда будут базовая таблица и таблица этапов, где базовая таблица совпадает с именем, которое следует за двоеточием в начале (PROTOCOL: BIRDS, так что это будет BIRDS), а таблица этапов всегда STAGE_ then что следует за толстой кишкой. Вы также заметите версию, дату последнего изменения и дату в XML. Об этих вещах можно беспокоиться позже и, возможно, добавить вручную.

1 Ответ

0 голосов
/ 15 сентября 2013

Вы должны понимать, что не существует такого понятия, как документ MS Word. Существует множество форматов, и некоторые ранние форматы не заслуживают названия, но их лучше описать как дамп памяти взломанного сжатого текста. Вам действительно не нужен XML, это более поздняя проблема. Вы должны взять под контроль данные в документе. Если это не один из самых новых, несколько документированных форматов, у вас есть только один вариант: взломать его. Напишите программу для манипулирования документом, пока не получите то, что хотите. Единственный, кто знает форматы MS-Word, это сама MS-Word. Поэтому, если вы сможете убедить ее сбросить содержимое в более или менее определенный формат, например RTF, у вас будет лучшая отправная точка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...