Что нового

Создание таблицы в Word

CEM

Новичок
Сообщения
3
Репутация
0
Доброго времени суток! Стоит задача, посредством AutoIt создать вордовский документ и таблицу в нем.
Вот текст макроса:
Код:
    ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=2, NumColumns:= _
        3, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
        wdAutoFitFixed
    With Selection.Tables(1)
        If .Style <> "Сетка таблицы" Then
            .Style = "Сетка таблицы"
        End If
        .ApplyStyleHeadingRows = True
        .ApplyStyleLastRow = False
        .ApplyStyleFirstColumn = True
        .ApplyStyleLastColumn = False
        .ApplyStyleRowBands = True
        .ApplyStyleColumnBands = False
    End With
    Application.Keyboard (1049)
    Selection.TypeText Text:="Название"
End
Помогите с синтаксисом в AutoIt. Как правильно написать в АвтоИт нечто подобное?
И вопрос №2: поделитесь, пожалуйста ссылочкой, где можно об этом почитать (кроме - msdn.microsoft.com/en-us/library/bb244515(v=office.12).aspx )
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
В AutoIt есть библиотека "Word.au3" , в частности там есть функция
Код:
_Word_DocTableWrite
в примере есть создание таблицы.
Так-же в этой теме http://autoit-script.ru/index.php?topic=14585.0 всё расписано.
 
Автор
C

CEM

Новичок
Сообщения
3
Репутация
0
Спасибо! Указанную Вами тему форума прочитал. Однако, в моеq "Word.au3" этой функции нет. Наверное, необходимо будет скачать более свежую версию библиотеки "Word.au3".
Был бы очень признателен Вам, если бы Вы скинули свою библиотеку или дали ссылочку.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Качайте последнюю версию AutoIt, там все есть.
 

pvnn

Осваивающий
Сообщения
305
Репутация
32
CEM, я делал так (через VBS или средствами Autoit):
Код:
; AutoIt Version: 3.3.12.0

#include <Word.au3>
#include <Array.au3>

$oWord = _Word_Create()		; Создать Новый экземпляр Word
$oDoc=_Word_DocAdd($oWord)	; Создать Итоговый новый пустой Word документ

Const $WrdConst=2.835 		; Константа для отступов. Чтобы отступ был 1 мм нужно умножить на константу 2.835


 ; К каждой отдельной таблице обращаемся по ее номеру

; ============= Создать Таблицу 1 через VBS
 $oRange = _Word_DocRangeSet($oDoc, -2)		; Устанавить курсор в Конец Word файла
 $oRange.InsertAfter('Таблица 1')			; Вставить данные
 $oRange = _Word_DocRangeSet($oDoc, -2) 	; Устанавить курсор в Конец Word файла
 $oDoc.Tables.Add($oRange,2,3)				; Создать таблицу 2 строки, 2 столбца
 $oDoc.Tables(1).Style = "Сетка таблицы"	; Нарисовать сетку таблицы

 $oRange = _Word_DocRangeSet($oDoc, -2)		; Устанавить курсор в Конец Word файла
 $oRange.InsertBreak($wdLineBreak) 			; Enter

; Форматирование Таблицы 1
 ; Задать отступы во всей таблице 1 мм
 $oDoc.Tables.Item(1).TopPadding=1*$WrdConst;
 $oDoc.Tables.Item(1).BottomPadding=1*$WrdConst;
 $oDoc.Tables.Item(1).RightPadding=1*$WrdConst;
 $oDoc.Tables.Item(1).LeftPadding=1*$WrdConst;
;~ ; Аналогичные четыре свойства есть и у отдельной ячейки. Можно выделить нужную ячейку, столбец или строку
;~ $oDoc.Tables.Item(1).Cell(2,2).Select;
;~ $oDoc.Tables.Item(1).Columns.Item(1).Select;
;~ $oDoc.Tables.Item(1).Rows.Item(2).Select;

 ; Установить ширину столбцов и высоту строк
 $oDoc.Tables.Item(1).Columns.Width=10*$WrdConst	; Установить ширину всех столбцов в таблице 10 мм
 $oDoc.Tables.Item(1).Rows.Height=20*$WrdConst		; Установить высоту всех строк в таблице 20 мм

 $oDoc.Tables.Item(1).Columns.Item(2).Width=20*$WrdConst 	; Ширина 2-го столбца 20 мм
 $oDoc.Tables.Item(1).Rows.Item(2).Height=10*$WrdConst 		; Высота 2-й строки 10 мм

 ; Добавить строки и столбцы
 $oDoc.Tables.Item(1).Columns.Add() 	; Добавить Столбец справа
 $oDoc.Tables.Item(1).Rows.Add()		; Добавить Строку снизу

 ; Выборочное Добавление строк и столбцов
 $oColumn=$oDoc.Tables.Item(1).Columns.Item(1)	; Указатель на объект, после какого столбца вставить новый
 $oDoc.Tables.Item(1).Columns.Add($oColumn)		; Вставляет новый столбец, после указанного ($oColumn)
 $oRow=$oDoc.Tables.Item(1).Rows.Item(1)		; Указатель на объект, после какой строки вставить новую
 $oDoc.Tables.Item(1).Rows.Add($oRow)			; Вставляет новую строку, после указанной ($oRow)

 ; Удалить из таблицы Первый столбец и четвертую строку:
 $oDoc.Tables.Item(1).Columns.Item(1).Delete
 $oDoc.Tables.Item(1).Rows.Item(4).Delete

 ; Запись текста в Таблицу 1
 $oDoc.Tables.Item(1).Columns.Item(2).Cells.Item(2).Range.Text='Запись' ; Или так $oDoc.Tables.Item(1).Cell(2,2).Range.Text='Запись'

 ; Объединить ячейки
 $oCel=$oDoc.Tables.Item(1).Cell(1,3)			; Указатель на объект - конечную ячейку($oCel)
 $oDoc.Tables.Item(1).Cell(1,1).Merge($oCel)	; Объединяет начальную ячейку Cell(1,1) с конечной ячейкой ($oCel)
 ; Разбить ячейки
 $oDoc.Tables.Item(1).Cell(1,1).Split(1,3);
 ; Подогнать размеры ячеек по содержимому
 $oDoc.Tables.Item(1).Columns.AutoFit

; Внешний вид Таблицы 1
 ; Виды текстур черно-белая или в шкале серого
 $wdTextureNone          =0x00000000
 $wdTexture2Pt5Percent   =0x00000019
 $wdTexture7Pt5Percent   =0x0000004B
 $wdTexture35Percent     =0x0000015E
 $wdTexture62Pt5Percent  =0x00000271
 $wdTextureSolid         =0x000003E8
 $wdTextureDarkHorizontal=0xFFFFFFFF
 $wdTextureCross         =0xFFFFFFF5
 $oDoc.Tables.Item(1).Cell(1,1).Shading.Texture = $wdTextureCross	; Текстура
 ; Заливка цветом
 $oDoc.Tables.Item(1).Cell(1,2).Shading.BackgroundPatternColor=RGBtoBGR('ad31ff') ; Фиолетовый цвет

 ; Форматирование указанных ячеек
 $oDoc.Tables.Item(1).Columns.Item(2).Cells.Item(2).Range.Text='Текст' ; Запись в таблицу
 $oDoc.Tables.Item(1).Cell(2,2).Shading.BackgroundPatternColor=RGBtoBGR('ffff31') ; Желтый цвет
 $oDoc.Tables.Item(1).Cell(2,2).Range.Font.Name='Times New Roman'
 $oDoc.Tables.Item(1).Cell(2,2).Range.Font.Italic=1
 $oDoc.Tables.Item(1).Cell(2,2).Range.Font.Size=16

 ; Форматирование выделенных ячеек
;~  $oDoc.Tables.Item(1).Columns.Item(2).Cells.Item(2).Range.Text='Текст' ; Запись в таблицу
;~  $oDoc.Tables.Item(1).Cell(2,2).Select ; Или так: $oDoc.Tables(1).Rows(2).Cells(2).Select ; Выделить ячейки
;~  $oWord.Selection.Cells.Shading.BackgroundPatternColor=RGBtoBGR('ffff31')
;~  $oWord.Selection.Font.Name='Times New Roman'
;~  $oWord.Selection.Font.Italic=1
;~  $oWord.Selection.Font.Size=16





; ============= Создать Таблицу 2 через AUTOIT
 $oRange = _Word_DocRangeSet($oDoc, -2)		; Устанавить курсор в Конец Word файла
 $oRange.InsertAfter('Таблица 2')			; Вставить данные
 $oRange = _Word_DocRangeSet($oDoc, -2)		; Устанавить курсор в Конец Word файла
 Local $aArray[4][6]						; 1 Строка, 6 столбцов
 _Word_DocTableWrite($oRange, $aArray, 0)	; Создать таблицу
 $oDoc.Tables(2).Style = "Сетка таблицы"	; Нарисовать сетку таблицы
 $oTable = $oDoc.Tables(2)		; Ссылка на объект Таблица 2
 $oNewRow = $oTable.Rows.Add()	; Добавить строку в Таблицу 2

; Добавить строку и Заполнить Таблицу 2 данными из Массива
 $oNewRow=$oDoc.Tables(2).Rows.Add() ; Добавить новую строку
 Local $aData[6]=['1','2','3','4','5','6']
 For $iCel = 1 To UBound($aData)
    $oNewRow.Cells($iCel).Range.Text = $aData[$iCel-1]
 Next

 ; Заполнить Первую строку Таблицы 2
 For $iCel = 1 To UBound($aData)
	$oTable.Rows.Item(1).Cells($iCel).Range.Text = $aData[$iCel-1]
	$oTable.Rows.Item(2).Cells(1).Range.Text = '1'
 Next

;  Запись в ячейку
$oTable.Columns.Item(3).Cells.Item(3).Range.Text = 'X'




; Функция перевода из RGB в BGR
	Func RGBtoBGR($RGBData)
		$BGRData=Dec(StringRight($RGBData,2)&StringMid($RGBData,3,2)&StringLeft($RGBData,2))
		Return $BGRData
	EndFunc
 
Автор
C

CEM

Новичок
Сообщения
3
Репутация
0
pvnn, спасибо!!! Гениально!!! Разжевали все до подробностей.

Yashied, в версии 3.3.12 (устанавливал в мае) были проблемы с флеш-плеером, поэтому перешел на 3.3.8.1.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
CEM,
[info border=#0000ff float=left]На форуме принято помечать тему решенной после получения ответа на свой вопрос!
Вверху или внизу темы нажмите на ссылку такого вида:
package_old.gif
Тема не решена
[/info]
 
Верх