У меня имеется большое количество текста в тексотвых файлах.
Требуется через Delphi, заменить текст на картинки, то есть каждый символ заменить на определенную картинку и ввести эти картинки в .doc файл.
Возможно ли вообще такое?
Как записать компонент image в doc?
Deleted
3611 золотой знак5 серебряных знаков13 бронзовых знаков
задан 23 ноя 2012 в 11:20
Вполне возможно.
Через OLE
Разбейте свою задачу на этапы:
1 Открыть документ Word через Delphi
2 Получить текст из активного документа Word
3 Вставить картинку в Word
Линк для пункта 1 и 2 Создать из Delphi документ MS Word
Линк для пункта 3 Image Delphi Word
ответ дан 23 ноя 2012 в 11:29
RsecomuaRsecomua
4,24312 серебряных знаков17 бронзовых знаков
В раздел программы Uses подключаем модуль ComObj. Для запуска Word запишем следующее:
procedure TForm1.Button1Click(Sender: TObject); var Word: variant; begin try Word := CreateOleObject(‘Word.Application’); except ShowMessage(‘Не могу запустить Microsoft Word’); end; Word.Visible := True; Word.Documents.Add; end; |
Как нарисовать линию в Word в Delphi:
Word.ActiveDocument.Shapes.AddLine(x1, y1, x2, y2); |
Как нарисовать прямоугольник в Word в Delphi:
Word.ActiveDocument.Shapes.AddShape(1, x1, y1, x2, y2); |
Как вставить изображение в Word в Delphi:
Word.Selection.InlineShapes.AddPicture(FileName:=‘C:test.bmp’, LinkToFile:=False, SaveWithDocument:=True); |
|
|
|
Пожалуйста, выделяйте текст программы тегом [сode=pas] … [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как «свернуть» программу в трей.
3. Как «скрыться» от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
… (продолжение следует) …
Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка — 60 дней. Последующие попытки бан.
Мат в разделе — бан на три месяца…
Как вставить в Word-документ изображение
, вопрос
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
т.е. картинку из какого-нибудь файла (*.jpeg, *.Bmp и т.д.). С помощью OLE-автоматизации. Сообщение отредактировано: Analitic — 23.11.04, 18:19 |
$im |
|
uses ComObj, ActiveX; … var Word, Sel: variant; FileName: string; LinkToFile, SaveWithDocument: boolean; begin Word:=CreateOleObject(‘Word.Application’); Word.Documents.Add; sel:=Word.Selection; Sel.InlineShapes.AddPicture(FileName, LinkToFile, SaveWithDocument); Word.Visible:=true; end;
где FileName — адрес картинки, LinkToFile — связывать ли с документом, SaveWithDocument — сохранять ли картинку с документом. Сообщение отредактировано: $im — 23.11.04, 19:00 |
Jureth |
|
Только вот Selection лучше не юзать — мало-ли что там выделится. А help по VBA — полезная вещь, но конкретно про OLE там, к сожалению, ничего нету. |
Analitic |
|
to Sim: Огромное спасибо! Без этой байды мой проект по информатике завалить могли бы. Спас ты меня, можно сказать. |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- Delphi: Общие вопросы
- Следующая тема
[ Script execution time: 0,0203 ] [ 16 queries used ] [ Generated: 13.04.23, 22:38 GMT ]
← →
MisterX
(2014-05-26 13:42)
[0]
Всем привет!
Прошу вашей помощи. Нужно картинку image1 вставить в ячейку (1,1) таблицы Ворд нажав кнопочку! Потом другую картинку image1 в ячейку (1,2)! Потом следующую картинку в ячейку (3,1) и т.д.
Помогите пожалуйста, как можно это реализовать.
Заранее благодарю!
← →
sniknik ©
(2014-05-26 13:47)
[1]
> Помогите пожалуйста, как можно это реализовать.
универсально, для офиса, переведя созданный «руками» макрос.
Sub Макрос3()
«
» Макрос3 Макрос
» Макрос записан 26.05.2014 ws-131
«
ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=2, NumColumns:= _
5, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
wdAutoFitFixed
With Selection.Tables(1)
If .Style <> «Сетка таблицы» Then
.Style = «Сетка таблицы»
End If
.ApplyStyleHeadingRows = True
.ApplyStyleLastRow = True
.ApplyStyleFirstColumn = True
.ApplyStyleLastColumn = True
End With
Selection.InlineShapes.AddPicture FileName:= _
«C:Documents and SettingsxxxxМои документыМои рисунки3123142.JPG» _
, LinkToFile:=False, SaveWithDocument:=True
End Sub
← →
sniknik ©
(2014-05-26 13:52)
[2]
+
раз уж фигурирует «таблица» то лучше использовать excel.
← →
MisteX
(2014-05-26 14:27)
[3]
Нужно чтоб автоматически вставлялась картинка
← →
sniknik ©
(2014-05-26 14:33)
[4]
чудес не бывает… сначала все одно придется сделать «руками», после руками же запрограммировать понятое, руками запустить полученную программу (настроить любой «авто») … и вот потом, программа, что нибудь сделает «автоматически», например вставит картинку.
или думал в сказке живешь? типа спросил, и золотая рыбка раз тебе готовый код… не, так не бывает.
← →
MisteX
(2014-05-26 14:35)
[5]
я знаю как одну картинку вставить!
← →
sniknik ©
(2014-05-26 14:39)
[6]
тогда открою страшную тайну… чтобы вставить две нужно повторить действие для одной, первой, но указать другую. чтобы 3… ну и т.д.
← →
oldman ©
(2014-05-26 14:40)
[7]
> sniknik © (26.05.14 13:47) [1]
Не трать время…
http://delphimaster.net/view/2-1400830587/
← →
sniknik ©
(2014-05-26 14:42)
[8]
;(
← →
MisteX
(2014-05-26 14:49)
[9]
sniknik, а если у тебя 200 картинок?
← →
junglecat
(2014-05-26 14:55)
[10]
> если у тебя 200 картинок?
надо 200 раз сделать ctrl+c / ctrl+v кода из [1]
← →
MisteX
(2014-05-26 14:59)
[11]
oldman с ACol и ARow понятно. Как забить переменную чтоб получилась то что нужно?
procedure TForm1.Button2Click(Sender: TObject);
begin
for i:=0 to 100 do
for j:=0 to 1 do
begin
ClipBoard.Assign(Image1.Picture);
App.ActiveDocument.Tables.Item(1).Cell(i,j).Selection.Paste;
end;
end;
Начало верное?
← →
MisteX
(2014-05-26 15:00)
[12]
junglecat а если Вы не знаете сколько их будет?
← →
sniknik ©
(2014-05-26 15:02)
[13]
> sniknik, а если у тебя 200 картинок?
плевать. программируешь любой алгоритм вставки (нормально с параметрами, а не хардкодя позиции ячеек), + цикл на n-раз… хотя не, n мало, m раз!
← →
sniknik ©
(2014-05-26 15:08)
[14]
> Начало верное?
нет, «хардкод» картинки, ее тоже нужно менять, и лучше из файла ([1]) а не клипборда.
← →
MisteX
(2014-05-26 15:17)
[15]
блондинкой себя чувствую:(
← →
MisteX
(2014-05-26 15:21)
[16]
procedure TForm1.Button2Click(Sender: TObject);
i,j,N:Integer;
begin
for i:=0 to N do
for j:=0 to 1 do
begin
end;
end;
Как вставить картинку в ячейку (1,1) например? Всего 2 столбца, 5 строк
← →
sniknik ©
(2014-05-26 15:39)
[17]
примерно так (код написан прямо здесь без проверки)
for i:=0 to N do
for j:=0 to 1 do
App.ActiveDocument.Tables.Item(1).Cell(i,j).InlineShapes.AddPicture(FileName:= MakeFileName(i,j)+».JPG», LinkToFile:=False, SaveWithDocument:=True);
твоя функция MakeFileName — тут по i, j должно определятся имя вставляемого файла. зависимость должна быть, если нету сделай ее.
← →
sniknik ©
(2014-05-26 15:40)
[18]
упс Selection случайно вырезал… ну неважно.
← →
MisteX
(2014-05-26 15:47)
[19]
Видел другую тему, там некий SkyWalker писал. Что-то подобное нужно.
То есть что я уже сделал:
в комбобокс выбираю имя файла, на имэйж1 появляется соответсвующая картинка.
и вот ее нужно при помощи Button1 вставить в ячейку 1,1 например.
потом выбираю в комбо другое имя файла, на имэйдж появляется соответствующая картинка, тык Button, она в ячейке 1,2.
и т.д.
Вот как это сделать?
Или у меня лыжи не едут?:)
← →
sniknik ©
(2014-05-26 15:58)
[20]
Palladin © (23.05.14 18:03) [45]
> Бездарная потеря времени.
+1
← →
MisteX
(2014-05-26 16:02)
[21]
почему?:(
← →
sniknik ©
(2014-05-26 16:08)
[22]
«показания» меняются по ходу. то нужен список, то уже по одному выбирать (а как же про 200-раз? + одну то говорил можешь, и в чем теперь проблема? вот оно выбор всегда по одной…).
не реализуемо.
есть единственный вариант, но никто на него не согласен — нанять программиста. ОЧЕНЬ дорого, т.к. такая же непоследовательность будет и в ТЗ.
← →
MisteX
(2014-05-26 16:33)
[23]
блин((( думал здесь помогут(((
Спасибо большое всем:) в таком случае не буду заморачиваться)))
← →
sniknik ©
(2014-05-26 16:47)
[24]
> блин((( думал здесь помогут(((
здесь именно что помогают, с конкретными проблемами/неясностями, а делать предполагается должен все таки автор.
ты же явно думал о чем-то другом, т.к. на помощь не реагировал, ждал чего-то другого.
> в таком случае не буду заморачиваться)))
хэпи энд.
и вам не хворать.
← →
brother ©
(2014-05-26 17:01)
[25]
[19] ага, это ты и есть… и комбобоксы и ворд, все как у него и у Вас) …
← →
Inovet ©
(2014-05-26 18:47)
[26]
> [5] MisteX (26.05.14 14:35)
> я знаю как одну картинку вставить!
Это ты третий раз за месяц говоришь. Допустим, знаешь. Тогда в чём проблема вставить несколько неняя в цикле координаты (номер) ячейки? С диска получить нужные файлы? Тогда см функции
FindFirst
FindNext
FindClose
Пример есть в справке.
← →
Inovet ©
(2014-05-26 18:48)
[27]
> [26] Inovet © (26.05.14 18:47)
> Это ты
В смысле — тот Скайвокер и ты говорите.