Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-1105955534
Максим
2005-01-17 12:52
2005.02.13
FireBird и SQL запрос


6-1101665260
leprikon_ix
2004-11-28 21:07
2005.02.13
Просмотр файловой системы удаленного ПК


3-1105737158
Alex_S
2005-01-15 00:12
2005.02.13
А как отвязать запись от таблицы?


1-1106730908
Aln
2005-01-26 12:15
2005.02.13
Можно ли сделать задержку, не используя таймер?


3-1105519018
Victor T
2005-01-12 11:36
2005.02.13
Не могу найти ошибку в запросе.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский