-
TStas © (14.07.06 20:27) [0]Попытки посмотреть свойства TWordApplication пока результатов не дали. С экселем все просто, да и статья по нему есть. А вот как вписать в ячейки именно вордовской таблицы текст?
-
isasa © (15.07.06 11:20) [1]Как вариант.
Сформировать таблицу как текст, разделенный табуляцией в буфере (WordBuff: string).
А потом сделать такой финт.
SetTable(wDoc.Paragraphs.Item(wDoc.Paragraphs.Count).Range, WordBuff, nCol); //в конец документа.
где
procedure TWordConsole.SetTable(Selection : variant; Text : string; nCol : integer);
begin
Selection.Text:=Text;
Selection.Font.Size := 9;
Selection.ConvertToTable(Separator:=wdSeparateByTabs, NumColumns:=nCol,
Format:=wdTableFormatNone, ApplyBorders:=True,
ApplyShading:=True, ApplyFont:=True, ApplyColor:=True,
ApplyHeadingRows:=True, ApplyLastRow:=False,
ApplyFirstColumn:=True, ApplyLastColumn:=False,
AutoFit:=True, AutoFitBehavior:=wdAutoFitContent,
DefaultTableBehavior:=wdWord9TableBehavior);
ReplaseStr(Selection, ';','^l'); // две строки в табл., раздел. "мягким" конц. стр.
Selection.ParagraphFormat.Alignment := wdAlignParagraphCenter;
end; -
isasa © (15.07.06 11:24) [2]Да, забыл, может пригодится.
const
wdFindContinue = 1;
WdFindWrap = 1;
wdReplaceAll = 2;
wdSeparateByTabs = 1;
wdTableFormatNone = 0;
wdStory = 6;
wdLine = 5;
wdCell = 12;
wdRowHeightAuto = 0;
wdAlignRowLeft = 0;
wdAdjustNone = 0;
wdGoToTable = 2;
wdGoToNext = 2;
wdAlignParagraphCenter = 1;
wdGoToLine = 3;
wdGoToFirst = 1;
wdAlignParagraphRight = 2;
wdAlignParagraphLeft = 0;
wdToggle = 9999998;
wdAlignTabRight = 2;
wdAlignTabLeft = 0;
wdTabLeaderDots = 1;
wdTabLeaderSpaces = 0;
wdOrientPortrait = 0;
wdAutoFitContent =1;
wdWord9TableBehavior = 1;
wdAlignRowCenter = 1; -
TStas © (16.07.06 20:13) [3]К сожалению не годится. Таблица - это заявление на упрощенку. Попытки сохранить в экселе ни к чему хорошему не привели. В том-то и трудность, чтобы по готовой таблице передвигать курсор и что-то в нее вписывать
-
isasa © (17.07.06 08:48) [4]На D примера нет, но хелп по Word советует, приблизительно так.
This example inserts numbers and text into the first column of the first table in the active document.
num = 90
For Each acell In ActiveDocument.Tables(1).Columns(1).Cells
acell.Range.Text = num & " Sales"
num = num + 1
Next acell
-
var
table: Variant;
i, j : integer;
{..................................................}
table := WordApp.Documents[1].Tables[1];
for i := 1 to Table.Rows.Count do
for j := 1 to table.Columns.Count do
table.Cell[i, j].Range.InsertAfter(IntToStr(i + j));
{.................................}
table := Unassigned; -
_Le_ (17.07.06 13:36) [6]можно сделать закладки и работать по ним,
можно так
Doc.Tables.Item(Nt).Cell(i,j).Select;
App.selection.TypeText('lalala');
i,j - строка/столбец ячейки в таблице
Nt - номер таблицы в документе