Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
2 / 2 / 1
Регистрация: 20.04.2015
Сообщений: 78

Работа с INI и Microsoft Office

14.07.2020, 08:45. Показов 1937. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Возник вопрос по реализации поиска и сопоставления параметров из ini файла.
Есть ini с содержанием типа:
[Москва]
Text=№324234 от 18.02.2020
[Санкт-Петербург]
Text=№232442 от 20.03.2020

и т.п
Из Excel выгружается столбец с перечислением городов.
Далее я сохраняю в Word каждый город в отдельный документ.
И также мне требуется в каждый документ прописать значения из ключейText соответствующий городу.
Примерно так:
Delphi
1
Word.Selection.find.execute (FindText := '%INFO%', replacewith := Ini.ReadString('NAMEGOR','Text',NULL);
Города могут меняться. Как можно реализовать перебор секций из ini и сопоставить их c городами из столбца в Excel?
Заранее спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.07.2020, 08:45
Ответы с готовыми решениями:

работа с microsoft office interop
Добрый день. В ворде есть способ получить содержимое файла из поврежденного файла(который не открывает ворд). Делается это так, создать...

Работа c Microsoft Office Interop Word
Есть программа, которая заполняет Вордовские шаблоны. Взаимодействие с Word осуществляется с помощью Microsoft Office Interop Word. До...

Работа с Microsoft.Office.Interop.Excel
Всем доброго времени суток. Возникает проблема работы с библиотекой Microsoft.Office.Interop.Excel Начинаю работать с Excel так: ...

28
2 / 2 / 1
Регистрация: 20.04.2015
Сообщений: 78
14.07.2020, 11:44  [ТС]
Студворк — интернет-сервис помощи студентам
D1973, Сумма отмеченная красным берется из выражения
Delphi
1
StrToFloat(StringGrid1.Cells[2,I])-StrToFloat(StringGrid1.Cells[17,I]
Или 3 столбец минус 18 столбец в исходном файле Excel
0
 Аватар для mr-Crocodile
3054 / 1673 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
14.07.2020, 11:46
Цитата Сообщение от D1973 Посмотреть сообщение
А откуда берется сумма, выделенная красным?
если я правильно понял, то это
Цитата Сообщение от Amilman1 Посмотреть сообщение
(FindText := '%VYCHET%', replacewith := StrToFloat(StringGrid1.Cells[2,I])-StrToFloat(StringGrid1.Cells[17,I]));
предположу, что из файла source_full.xls столбец С (сумма) минус столбец R (Вознаграждение НКО)

Добавлено через 49 секунд
Amilman1, пост #20 увидел?
0
2 / 2 / 1
Регистрация: 20.04.2015
Сообщений: 78
14.07.2020, 11:51  [ТС]
mr-Crocodile, Да увидел, спасибо.
Но теперь при закрытии программы получаю сообщение:
---------------------------
Code
1
2
3
4
5
Unexpected Memory Leak
---------------------------
An unexpected memory leak has occurred. The unexpected small block leaks are:
1 - 12 bytes: TIniFile x 2
205 - 220 bytes: UnicodeString x 2
0
 Аватар для mr-Crocodile
3054 / 1673 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
14.07.2020, 12:00
какой ужас!!
у тебя же вообще не должно ничего работать!

ты же ini не присваиваешь.

должно быть

Delphi
1
2
3
4
5
6
7
procedure TForm16.Button5Click(Sender: TObject);
var
   ..
  Ini: Tinifile;
begin
try
   Ini := TInifile.Create(ExtractFilePath(ParamStr(0))+'setting.ini');
и в конце процедуры надо сделать
Delphi
1
Ini.Free;
или
Delphi
1
  FreeAndNil(ini);
и убери строчку с FormCreate
procedure TForm16.FormCreate(Sender: TObject);
begin
TInifile.Create(ExtractFilePath(ParamStr (0))+'setting.ini');
end;
1
2 / 2 / 1
Регистрация: 20.04.2015
Сообщений: 78
14.07.2020, 12:07  [ТС]
mr-Crocodile, В Button5 я присваиваю ini
Delphi
1
2
3
4
5
6
7
8
procedure TForm16.Button5Click(Sender: TObject);
var
Word: variant;
I,j:integer;
Ini: Tinifile;
begin
try
Ini:=TiniFile.Create(extractfilepath(paramstr(0))+'setting.ini');
Скорее всего исходник вам скинул до сохранения проекта..
Вот только про Ini.Free; абсолютно забыл..
А в Create строка закомментирована.

Upd:
FreeAndNil(ini); решило проблему с утечкой памяти.
0
 Аватар для mr-Crocodile
3054 / 1673 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
14.07.2020, 12:12
Цитата Сообщение от Amilman1 Посмотреть сообщение
Скорее всего исходник вам скинул до сохранения проекта..
не надо так делать.

Цитата Сообщение от Amilman1 Посмотреть сообщение
Вот только про Ini.Free; абсолютно забыл..
А в Create строка закомментирована.
ок
0
2 / 2 / 1
Регистрация: 20.04.2015
Сообщений: 78
14.07.2020, 12:16  [ТС]
mr-Crocodile,
И есть еще небольшой вопросик.
В Grid у меня выгружаются все поля данных включая и "Итого".
В связи с этим помимо файлов с наименованием предприятий, пример: "Имя Московское ГПАТП" я получаю документ Word "Имя Итого" который вообще не нужен
Сохранение происходит все там же по кнопке Button5

Как мне исключить обработку последней строки?
0
 Аватар для mr-Crocodile
3054 / 1673 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
14.07.2020, 13:43
Лучший ответ Сообщение было отмечено Amilman1 как решение

Решение

Цитата Сообщение от Amilman1 Посмотреть сообщение
Как мне исключить обработку последней строки?
вижу два простых варианта

1) если в ячейке написано 'Итого' - то эту строчку игнорируем

2) в столбце B должно быть ID (кстати, привязку к INI можно было делать через ID - думаю, что это уникальное поле)
если в столбце B пусто - то эту строчку игнорируем

Добавлено через 3 минуты
на примере кода
Delphi
1
2
3
4
5
6
7
for I := 0 to StringGrid1.RowCount-1 do
begin
   if Trim(StringGrid1.Cells[0,I])<>'Итого' then begin
     // тут код сохранения
      Word.Documents.....
   end;
end;
или
Delphi
1
2
3
4
5
6
7
for I := 0 to StringGrid1.RowCount-1 do
begin
   if Trim(StringGrid1.Cells[1,I])<>'' then begin
     // тут код сохранения
      Word.Documents.....
   end;
end;
1
2 / 2 / 1
Регистрация: 20.04.2015
Сообщений: 78
14.07.2020, 14:14  [ТС]
mr-Crocodile, Спасибо вам за оказанную помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.07.2020, 14:14

Создание и работа c файлами форматов Microsoft Office
Добрый день! Имеется следующая проблема: в VS 2010 разработано приложение которое создает и работает с файлами форматов Microsoft...

Крайне медленная работа Microsoft.Office.Interop.Word
Имею конструкцию такого плана: Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application(); ...

Некорректная работа с Microsoft.office.interop.excel.dll на других ПК
Всем добра! Понимаю, тема уже избита и много раз обсуждалась, но все же хотелось уточнить раз и навсегда На рабочей станции стоит ...

Использование Microsoft.Office.Interop.Word на компьютере без установленного пакета MS office
Есть приложение, которое использует Microsoft.Office.Interop.Word, на компах с установленным офисом 2010, все нормально работает, если...

Microsoft.Office.Interop для всех версий MS Office
Здравствуйте! Нашёл кучу околоподобных тем, но без нужных решений. Задача такая: Пишу на C# программу, которая использует Interop...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru