Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как вписывать что-то в вордовскую таблицу?


TStas ©   (2006-07-14 20:27:00) 

Попытки посмотреть свойства TWordApplication пока результатов не дали. С экселем все просто, да и статья по нему есть. А вот как вписать в ячейки именно вордовской таблицы текст?


_Le_   (2006-07-17 13:36:00) [1]

можно сделать закладки и работать по ним,
можно так
       Doc.Tables.Item(Nt).Cell(i,j).Select;
       App.selection.TypeText('lalala');
i,j - строка/столбец ячейки в таблице
Nt - номер таблицы в документе


umbra   (2006-07-17 11:02:00) [2]

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;


isasa   (2006-07-17 08:48:00) [3]

На 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


TStas   (2006-07-16 20:13:00) [4]

К сожалению не годится. Таблица - это заявление на упрощенку. Попытки сохранить в экселе ни к чему хорошему не привели. В том-то и трудность, чтобы по готовой таблице передвигать курсор и что-то в нее вписывать


isasa   (2006-07-15 11:24:00) [5]

Да, забыл, может пригодится.

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;


isasa   (2006-07-15 11:20:00) [6]

Как вариант.
Сформировать таблицу как текст, разделенный табуляцией в буфере (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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо