Форум: "Основная";
Текущий архив: 2005.02.13;
Скачать: [xml.tar.bz2];
ВнизКак экспортировать текст вместе с графикой из MS Word Найти похожие ветки
← →
Chudaks © (2005-01-27 08:58) [0]Господа Мастера Делфи подскажите как можно экспортировать текст вместе с графикой из MS Word не нарушив при этом структуру текста. Если существует такая компонента подскажите где можно будет ее взять.
← →
Александр Иванов © (2005-01-27 09:40) [1]Экспортировать куда?
← →
ЮЮ © (2005-01-27 09:49) [2]>экспортировать ... из MS Word
Копируй нужное в буфер обмена. Экспорт состоялся. Теперь, пожалуй, проблемо в импорте :)
← →
chudaks © (2005-01-27 11:41) [3]Задача такая необходимо программно экспортировать текст с графикой в базу данных.
← →
ЮЮ © (2005-01-27 11:43) [4]в базу данных можно сохранить, а дальше что с этим текстом делать собираешься? Сохраняй весь файл, просматривать/редактировать будешь опять же в MS Word
← →
Arm79 © (2005-01-27 11:50) [5]делается достаточно просто. текст и картинки, набранные (вставленные) в Ворде сохрани в файл, который потом и вставишь в БД в поле BLOB.
← →
Chudaks © (2005-01-27 18:13) [6]Пишется такая программа:
1) экспортируются вопросы и ответы (графика и текст)из MS WORD
2) каждый вопрос, ответ записывается в отдельно в БД
← →
MakedoneZ © (2005-01-27 19:01) [7]OLE
← →
ЮЮ © (2005-01-28 06:10) [8]Ты об импорте сначала полумай, а то наэкспортируешь, а что потом будешь делать с экспортным товаром? Допустим тебе это удалось. Дальше что собираешься использовать? Если, например, опять же MS Word, то, естестественно, достаточно сохранить Word-овскую часть буфера обмена. Если же, например, TRichEdit, то сначала убедись, что перенеся даже с помощью буфера обмена из MS Word в TRichEdit получишь в последнем именно то, что скопировал в Word-е :)
← →
Shirson (2005-01-28 09:22) [9]
var
H1,H49163:Thandle;
MS1,MS49163:TMemoryStream;
B1,B49163:pByte;
L1,L49163:longint;
msWord:Variant;
begin
MsWord:=CreateOleObject("Word.Application");
MsWord.Documents.Open(FileName:="My_doc.doc");
clipboard.clear;
MsWord.ActiveDocument.Range(d1,d2).copy; //Это копирование куска текста из Ворда в клипборд. Если тебе нужен весь текст сразу, замени Range (хелп по ворду смотри)
adoquery1.close;
adoquery1.sql.text:="insert into MS_DOC_TABLE (Doc,RawText) values(:Doc,:RawText)";
ClipBoard.Open;
MS1:=TMemoryStream.create;
MS49163:=TMemoryStream.create;
H1:=Clipboard.GetAsHandle(1); //содержимое клипборда в формате голого текста (если ненужно - выкинь)
H49163:=Clipboard.GetAsHandle(49163); //содержимое клипборда в формате ворда (MSW2000, хотя, 97 тоже пашет)
B1:=GlobalLock(H1); // Если не знаешь что это, просто скопируй - объяснять долго :)
B49163:=GlobalLock(H49163);
L1:=globalsize(H1); // Размеры буферов для голого текста
L49163:=globalsize(H49163); // и для вордовского формата
MS1.writebuffer(B1^,L1); // запись инфы из буферов в потоки. соотвественно
MS49163.writebuffer(B49163^,L49163);
adoquery1.Parameters.ParamByName("Doc").LoadFromStream(MS49163,ftBlob); //Пишем в поле в вордовском формате. Поле типа image (у меня MSSQL 8.0)
adoquery1.Parameters.ParamByName("RawText").LoadFromStream(MS1,ftString); //Пишем в поле в текстовом формате
Clipboard.close;
adoquery1.ExecSQL;
MS1.Free;
MS49163.Free;
GlobalUnlock(H1);
GlobalUnlock(H49163);
End;
Всё.
Выгребать еще проще:
TBlobField(adoquery1.FieldByName("doc")).SaveToFile("FromDB.doc");
P.S. Если же тебе вообще нужно хранилище для вордовских файлов, всмысле as is - пиши в базу через потоки. Так всё что угодно можно писать, хоть ворд, хоть автокад, хоть своп-файлы.
Создаёшь поток, грузишь в него файл и зашвыриваешь в базу.
Приведенный вариант нужен, если есть надобность засовывать документ не цельным кусоком, а по частям или с предобработкой.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.02.13;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.042 c