{ Add these global variables/constants:
als Globale Variablen/Konstanten deklarieren: }var
XLApp: Variant;
WordApp: Variant;
const
xlWBATWorksheet = -4167;
wdDoNotSaveChanges = 0;
{For creating data in Excel we shall start it first:
Excel starten:}//Starting Excel application:
XLApp := CreateOleObject('Excel.Application');
// Making it visible:
XLApp.Visible := True;
// Adding workbook:
XLApp.Workbooks.Add[XLWBatWorksheet];
// Specifying name of worksheet:
XLApp.Workbooks[1].Worksheets[1].Name := 'Delphi Data';
{Now inserting data to Excel:
Daten in Excel einfugen:}procedure TForm1.InsertData2Excel;
var
Sheet: Variant;
i: Integer;
begin
Sheet := XLApp.Workbooks[1].Worksheets['Delphi Data'];
for i := 1 to 10 do
Sheet.Cells[i, 1] := i;
end;
{And copying data from Excel to Word.
Daten von Excel nach Word kopieren. }{This process consists of two phrases:
1) Data should be copied from Excel into Windows clipboard.
2) Data should be pasted from Windows clipboard into the Word.
For successful completion both Excel and Word should be running.
Copying data from Excel into Windows clipboard:
Daten von Excel in die Zwischenablage kopieren: }procedure TForm1.CopyData;
var
Sheets: Variant;
begin
SetFocus;
Sheets := XLApp.Sheets;
// Selecting our worksheet:
Sheets.Item['Delphi Data'].Activate;
// Selecting our cells:
Sheets.Item['Delphi Data'].Range['A1:A10'].Select;
// Copying selected cells into clipboard:
Sheets.Item['Delphi Data'].UsedRange.Copy;
// Inserting copied data into Word
InserData2Word;
end;
procedure TForm1.InsertData2Word;
var
Range: Variant;
i: Integer;
begin// Starting Word:
WordApp := CreateOleObject('Word.Application');
// Making it visible:
WordApp.Visible := True;
// Adding new document:
WordApp.Documents.Add;
// Inserting description text into new document:
Range := WordApp.Documents.Item(1).Range;
Range.Text := 'This is a column from a spreadsheet: ';
for i := 1 to 3 do WordApp.Documents.Item(1).Paragraphs.Add;
// Inserting data from clipboard
Range := WordApp.Documents.Item(1).Range(WordApp.Documents.Item
(1).Paragraphs.Item(3).Range.Start);
Range.Paste;
for i := 1 to 3 do WordApp.Documents.Item(1).Paragraphs.Add;
end;
{Don't forget to close Excel and Word by your program termination:
Excel und Word anschliessend wieder schliessen:}procedure TForm1.FormDestroy(Sender: TObject);
beginifnot VarIsEmpty(XLApp) thenbegin
XLApp.DisplayAlerts := False; // Discard unsaved files...
XLApp.Quit;
end;
ifnot VarIsEmpty(WordApp) thenbegin
WordApp.Documents.Item(1).Close(wdDoNotSaveChanges);
WordApp.Quit;
end;
end;
Код, предоставленный ниже, это программный проект на языке Delphi, который взаимодействует с приложениями Excel и Word для передачи данных между ними.
Глобальные переменные/константы
XLApp и WordApp: Переменные Variant, представляющие экземпляры приложений Excel и Word соответственно.
xlWBATWorksheet: Константа, представляющая тип листа в Excel (-4167).
wdDoNotSaveChanges: Константа, представляющая опцию "Не сохранять изменения" для закрытия документа в Word (0).
Запуск Excel
Код запускает экземпляр Excel, создавая объект OleObject и делая его видимым. Затем добавляется новый файл workbook с одним листом, названным "Delphi Data".
Вставка данных в Excel
Определена процедура InsertData2Excel, которая вставляет данные от 1 до 10 в первый столбец листа.
Копирование данных из Excel
Процедура CopyData выбирает лист и ячейки в Excel, копирует их в буфер обмена Windows, а затем вызывает процедуру InsertData2Word, чтобы вставить данные в новый документ Word.
Вставка данных в Word
Процедура InsertData2Word создает новый экземпляр Word, добавляет новый файл document, вставляет текст описания и затем вставляет данные из буфера обмена Excel в документ.
Закрытие Excel и Word
В обработчике события FormDestroy формы код обеспечивает закрытие любых открытых экземпляров Excel и Word при завершении программы.
Некоторые предложения по улучшению:
1. Используйте более описательные имена переменных, чтобы сделать код более понятным.
2. Рассмотрите использование механизмов обработки ошибок для обработки потенциальных ошибок при выполнении процедур.
3. Процедура InsertData2Word может быть оптимизирована, уменьшив количество итераций в цикле, который вставляет абзацы и вставляет данные из буфера обмена.
4. Программа не кажется обработкой ситуаций, когда Excel или Word уже запущены на системе. Вам может потребоваться добавить проверки для этого и запросить пользователя закрыть любые существующие экземпляры перед продолжением.
В целом, код предоставляет хорошую основу для взаимодействия с Excel и Word из Delphi. С некоторыми улучшениями он может стать еще более надежным и reliabel.
Передать данные из Excel в Word: программа на Delphi для автоматической передачи данных из таблицы Microsoft Excel в документ Microsoft Word.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.