powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Работа с Word 2003
11 сообщений из 11, страница 1 из 1
Работа с Word 2003
    #38312039
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!

Пользователь грузит файл формата .doc

Мне нужно достать данные из таблицы, заполненные по заранее известному шаблону.
У меня openXML выдаёт ошибку file contains corrupted data.

Мне нужно перевести файл в docx и работать с OpenXml?
Но ведь тогда придётся сохранять файл, а потом удалять после обработки, т.е. это не лучший вариант.


Что вы мне посоветуете?
...
Рейтинг: 0 / 0
Работа с Word 2003
    #38312058
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отказаться от формата doc.
...
Рейтинг: 0 / 0
Работа с Word 2003
    #38312070
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyОтказаться от формата doc.
формат doc (старый) документирован, зачем отказываться?
...
Рейтинг: 0 / 0
Работа с Word 2003
    #38312157
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
От того, что он документирован, он не становится удобным.
...
Рейтинг: 0 / 0
Работа с Word 2003
    #38312169
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Использовать конвертер (написать отдельный сервис конвертации)

wordconv.exe
OpenXMLTranslator
Aspose.Words
Spire.Doc

2. Microsoft Office Interop Word Assembly 12.0 + WdSaveFormat.wdFormatDocumentDefault

3. Отказаться от устаревшего типа
...
Рейтинг: 0 / 0
Работа с Word 2003
    #38312448
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ясно, спасибо.

выбрал пункт 3. Не знаю, правда, что на это скажет заказчик.
...
Рейтинг: 0 / 0
Работа с Word 2003
    #38312468
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Studentsвыбрал пункт 3
Правильный выбор.

StudentsНе знаю, правда, что на это скажет заказчик.
Попытайся убедить его в том, что это старый неподдерживаемый современным ПО формат. Сейчас уже даже многие гос. учреждения перешли на формат docx для внутреннего и онлайн документооборота.

В любом случае, у заказчика есть возможность использовать бесплатный пакет совместимости: Пакет обеспечения совместимости Microsoft Office для форматов файлов Word, Excel и PowerPoin
...
Рейтинг: 0 / 0
Работа с Word 2003
    #38312829
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ясно, спасибо за советы
...
Рейтинг: 0 / 0
Работа с Word 2003
    #38313073
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ещё 2 вопроса.

1)Каким образом можно сделать выборку всех XMLNode:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
OpenFileDialog ofd = new OpenFileDialog();
                ofd.Filter = "Word Documents|*.docx";
                DialogResult dr = ofd.ShowDialog();

                if (dr == DialogResult.OK)
                {
                    string template = ofd.FileName;

                    string documentText;
                    try
                    {
                        using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(template, true))
                        {
                            using (StreamReader reader = new StreamReader(wordDoc.MainDocumentPart.GetStream()))
                            {
                                documentText = reader.ReadToEnd();                                
                                XmlDocument doc = new XmlDocument();
                                try
                                {
                                    doc.LoadXml(documentText);
                                   
                                    XmlNamespaceManager nm = new XmlNamespaceManager(doc.NameTable);
                                    nm.AddNamespace("w", "http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas");

                                    XmlNodeList nlist = doc.SelectNodes("/w:tbl/w:tr", nm);
                                    foreach (XmlNode xn in nlist)
                                    {
                                      ....
                                     }



У меня в nlist ничего не попадает, хотя такие тэги есть.


2)Т.к. я беру docx 2010 года, то ссылка
http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas

А если пользователь будет грузить 2007 или 2013 годов, то ссылку нужно будет менять?
...
Рейтинг: 0 / 0
Работа с Word 2003
    #38313134
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам XML выглядит так (это только начало)

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 wp14">
  <w:body>
    <w:p w:rsidR="0028470A" w:rsidRDefault="0028470A" w:rsidP="00BD4941">
      <w:pPr>
        <w:jc w:val="right"/>
        <w:rPr>
          <w:rFonts w:ascii="Verdana" w:hAnsi="Verdana" w:cs="Verdana"/>
          <w:sz w:val="20"/>
          <w:szCs w:val="20"/>
        </w:rPr>
      </w:pPr>
      <w:bookmarkStart w:id="0" w:name="_GoBack"/>
      <w:bookmarkEnd w:id="0"/>
    </w:p>
    <w:tbl>
      <w:tblPr>
        <w:tblStyle w:val="a3"/>
        <w:tblW w:w="5000" w:type="pct"/>
        <w:tblInd w:w="0" w:type="dxa"/>
        <w:tblBorders>
          <w:top w:val="single" w:sz="4" w:space="0" w:color="FFFFFF"/>
          <w:left w:val="single" w:sz="4" w:space="0" w:color="FFFFFF"/>
          <w:bottom w:val="single" w:sz="4" w:space="0" w:color="FFFFFF"/>
          <w:right w:val="single" w:sz="4" w:space="0" w:color="FFFFFF"/>
          <w:insideH w:val="none" w:sz="0" w:space="0" w:color="auto"/>
          <w:insideV w:val="single" w:sz="4" w:space="0" w:color="FFFFFF"/>
        </w:tblBorders>
        <w:tblLook w:val="01E0" w:firstRow="1" w:lastRow="1" w:firstColumn="1" w:lastColumn="1" w:noHBand="0" w:noVBand="0"/>
      </w:tblPr>
      <w:tblGrid>
        <w:gridCol w:w="5134"/>
        <w:gridCol w:w="5135"/>
      </w:tblGrid>
      <w:tr w:rsidR="0028470A" w:rsidRPr="007150F0">
        <w:trPr>
          <w:trHeight w:val="1252"/>
        </w:trPr>
        <w:tc>
          <w:tcPr>




Может проблема в том, что ссылки для XmlNamespaceManager.AddNamespace не работают, если по ним перейти.
Но word возвращает этот XML
...
Рейтинг: 0 / 0
Работа с Word 2003
    #38313404
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всё разобрался
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Работа с Word 2003
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]