14 / 14 / 8
Регистрация: 07.03.2016
Сообщений: 152
1

Сравнение двух таблиц, с разных вордовских файлов

01.09.2016, 08:41. Показов 1876. Ответов 52
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток, уважаемые знатоки, подскажите пожалуйста каким образом или возможно ли это вообще. Хочу брать 2 вордовских файла с одинаковыми таблицами и сравнивать их на наличие одинаковых строк, причём чтобы те строки, которые существуют только в одном файле - выводились на экран.
Заранее спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.09.2016, 08:41
Ответы с готовыми решениями:

Сравнение таблиц с разных файлов
Ребята, приветствую! Мне очень нужна ваша помощь. Имеется 2 файла, в одной таблицы выгружаются из...

Сравнение двух таблиц на разных листах
Доброе время суток! Друзья, помогите решить задачу, есть макрос поиска одинаковых строк и...

Сравнение двух разных таблиц Excel в MS Access
Есть прайс-листы в Excel от поставщиков, как лучше их сравнивать,чтобы узнать какие новые товары...

Сравнение двух ячеек из разных файлов
Здравствуйте! Есть 2 разных файла, в которых необходимо сравнить столбцы с номерами основных...

52
5538 / 4323 / 1383
Регистрация: 14.04.2014
Сообщений: 19,386
Записей в блоге: 19
01.09.2016, 09:42 2
сведите задачу к этапам
1 забрать таблицу из документа Word в StringList
2 сравнить два StringList
вот тут работа с таблицей есть. правда в другую сторону, но идея та же
Как создать несколько отдельных таблиц в Word-е?
1
14 / 14 / 8
Регистрация: 07.03.2016
Сообщений: 152
01.09.2016, 11:27  [ТС] 3
krapotkin, окей, спасибо, буду пробовать

Добавлено через 1 час 43 минуты
krapotkin, с экспортом из stringgrid в word я разобрался, а вот наоборот... как это примерно хотя бы делается, даже не представлю, не подскажите?
0
Эксперт Pascal/Delphi
4891 / 2761 / 851
Регистрация: 04.10.2012
Сообщений: 10,062
01.09.2016, 11:35 4
San22Rus, см. здесь

Добавлено через 1 минуту
P.S. Правильнее было бы назвать статью выше "Как импортировать таблицу из MS Word в TStringGrid?"
1
14 / 14 / 8
Регистрация: 07.03.2016
Сообщений: 152
01.09.2016, 11:36  [ТС] 5
droider, мистика, почему то когда я гуглил, не одна похожая тема не попалась, спасибо, буду разбираться
0
Эксперт Pascal/Delphi
4891 / 2761 / 851
Регистрация: 04.10.2012
Сообщений: 10,062
01.09.2016, 11:40 6
Цитата Сообщение от San22Rus Посмотреть сообщение
почему то когда я гуглил, не одна похожая тема не попалась
я искал так
Миниатюры
Сравнение двух таблиц, с разных вордовских файлов  
0
Эксперт Pascal/Delphi
4891 / 2761 / 851
Регистрация: 04.10.2012
Сообщений: 10,062
01.09.2016, 11:41 7
Только результаты запроса немного "странные". Видимо многие не отличают экспорт от импорта
0
14 / 14 / 8
Регистрация: 07.03.2016
Сообщений: 152
01.09.2016, 11:46  [ТС] 8
droider, буду знать теперь
0
14 / 14 / 8
Регистрация: 07.03.2016
Сообщений: 152
01.09.2016, 13:27  [ТС] 9
сделал всё так как указано в ссылке, программа компилируется и запускается без проблем, но после выбора таблицы с документа, по нажатию кнопки "Ок", выходит сообщение об ошибке (скрин), я так понял, что какой то способ "столбцы" не поддерживаются объектам автоматизации....Что это за ошибка и как с ней можно разобраться?
Миниатюры
Сравнение двух таблиц, с разных вордовских файлов  
0
5090 / 4103 / 1027
Регистрация: 29.08.2013
Сообщений: 26,011
Записей в блоге: 3
01.09.2016, 13:29 10
самые важные слова должны идти первыми
перед обязательными словами в запросе яндекса нужно ставить +


например
delphi +импорт doc в Stringgrid
0
5538 / 4323 / 1383
Регистрация: 14.04.2014
Сообщений: 19,386
Записей в блоге: 19
01.09.2016, 13:33 11
если есть готовый код, проще его выложить, чтобы кто-то мог проверить
0
14 / 14 / 8
Регистрация: 07.03.2016
Сообщений: 152
01.09.2016, 13:44  [ТС] 12
krapotkin, конечно, вот весь код проекта
Delphi
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
unit Unit1;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Grids;
 
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
uses ComObj;
 
{$R *.dfm}
 
 
 
procedure TForm1.Button1Click(Sender: TObject);
const
 AWordDoc = 'C:\word\table.doc';
var
  MSWord,Table: OLEVariant;
  iRows,iCols,iGridRows,jGridCols,iNumTables,iTableChosen: integer;
  CellText:string;
  InputString:string;
begin
  try
    MSWord:=CreateOleObject('Word.Application');
  except
    ShowMessage('Ошибка открытия файла .docx!');
    Exit;
  end;
  try
    MSWord.Visible:=false;
    MSWord.Documents.Open(AWordDoc);
    // Узнаём количество таблиц в документе
    iNumTables:=MSWord.ActiveDocument.Tables.Count;
 
    InputString:=InputBox('Таблиц в документе: '+IntToStr(iNumTables),'Пожалуйста введите номер таблицы','1');
    // Проверка строки на число, диапазон...
    iTableChosen:= StrToInt(InputString);
    Table:=MSWord.ActiveDocument.Tables.Item(iTableChosen);
    // размер таблицы
    iCols:=Table.Rows.Count;
    iRows:=Table.Colums.Count;
    // настройка столбцов StringGrid
    StringGrid1.RowCount:=iCols;
    StringGrid1.ColCount:=iRows + 1;
    // цикл по ячейкам
    for iGridRows:=1 to iRows do 
    for jGridCols:=1 to iCols do
    Begin
      CellText:=Table.Cell(jGridCols, iGridRows).Range.FormattedText;
      if not VarisEmpty(CellText) then
      Begin
        // Удаляем таблицу
        CellText:=StringReplace(CellText,'#0$D','', [rfReplaceAll]);
        CellText := StringReplace(CellText, '#0$7','', [rfReplaceAll]);
        // fill Stringgrid
          Stringgrid1.Cells[iGridRows, jGridCols] := CellText;
      End;
    End;
  finally
    MSWord.Quit;
  end;
end;
 
end.
Добавлено через 9 минут
Мне не очень понятен код в троке 70-71, а именно
Delphi
1
#0$D
и
Delphi
1
#0$7
, если я убираю с них кавычки, то делфи на них ругается:
[dcc32 Error] Unit1.pas(70): E2066 Missing operator or semicolon
[dcc32 Error] Unit1.pas(70): E2250 There is no overloaded version of 'StringReplace' that can be called with these arguments
[dcc32 Error] Unit1.pas(71): E2066 Missing operator or semicolon
[dcc32 Error] Unit1.pas(71): E2250 There is no overloaded version of 'StringReplace' that can be called with these arguments
Означает, что отсутствует оператор или точка с запятой, но я уже методом тыка даже не могу понять где отсутствует(
0
5538 / 4323 / 1383
Регистрация: 14.04.2014
Сообщений: 19,386
Записей в блоге: 19
01.09.2016, 13:57 13
символы в строке могут быть переданы кодами
запись #код
шестнадцатиричный вид начинается с $
итого это перенос строки . тут просто ошибка в записи. должно быть
Delphi
1
StringReplace(CellText,#$D,'', [rfReplaceAll])
удалить из строки все символы переноса
1
14 / 14 / 8
Регистрация: 07.03.2016
Сообщений: 152
01.09.2016, 14:01  [ТС] 14
krapotkin, спасибо, теперь более менее понятно, но ошибка о которой я говорил выше не устранилась
0
Эксперт Pascal/Delphi
4891 / 2761 / 851
Регистрация: 04.10.2012
Сообщений: 10,062
01.09.2016, 14:14 15
Цитата Сообщение от San22Rus Посмотреть сообщение
ошибка о которой я говорил выше не устранилась
У Вас написано "Colums", а должно быть "Columns"
1
14 / 14 / 8
Регистрация: 07.03.2016
Сообщений: 152
01.09.2016, 14:16  [ТС] 16
droider, такая элементарная ошибка, огромнейшее спасибо
0
Эксперт Pascal/Delphi
4891 / 2761 / 851
Регистрация: 04.10.2012
Сообщений: 10,062
01.09.2016, 14:23 17
San22Rus, не за что. Бывает.

Не по теме:

Цитата Сообщение от qwertehok Посмотреть сообщение
в запросе яндекса
по мне яндекс не находит половину из того, что доступно в гугл. Изначально, где-то в 2006-м, начал пользоваться яндексом, но после знакомства с поисковиком гугл больше не вернулся на него. Изредка только :)

0
14 / 14 / 8
Регистрация: 07.03.2016
Сообщений: 152
01.09.2016, 14:25  [ТС] 18
droider, вы не первый кто так мне говорит
0
qwertehok
01.09.2016, 14:29
  #19

Не по теме:

Цитата Сообщение от droider Посмотреть сообщение
по мне яндекс не находит половину из того, что доступно в гугл
ничего не хочу сказа про гугл, но
https://yandex.ru/support/sear... ontext.xml

0
5538 / 4323 / 1383
Регистрация: 14.04.2014
Сообщений: 19,386
Записей в блоге: 19
01.09.2016, 14:40 20
я уже сталкивался что по вопросам программирования яндекс действительно значительно беднее отвечает
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.09.2016, 14:40
Помогаю со студенческими работами здесь

Сравнение двух столбцов из разных файлов
Доброго времени суток! Не геракл в VBA, но возникла такая потребность: Есть 2 абсолютно...

Сравнение данных из двух разных файлов Excel
Добрый день, форумчане! До этого не имел дело с VBA. Начинаю только изучать. Начальство...

Сопоставление двух таблиц из разных файлов excel
Давно не работал с экселем, поэтому мозг немного отказывается решать следующую задачу Есть два...

Сравнение двух столбцов из разных файлов и запись результатов в третий файл ( Apache POI )
Не могу разобраться в цикле записи результатов сравнения двух столбцов(в обоих по 1 листу) в третью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru