Я пытаюсь разработать функцию печати в приложении Java Swing для настольных ПК. Все, что мне нужно, это базовая печать, поэтому нет необходимости во внешней библиотеке или что-то в этом роде. Мое приложение предназначено только для Windows, поэтому ничто не мешает мне использовать файл VBS для создания документа Word (.docx) и просто распечатать его.
Дело в том, что мне нужно напечатать таблицу. Мое приложение генерирует следующий скрипт (игнорируйте поля, тексты и т. Д.).
Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Add()
objWord.Visible = False
Set objSelection = objWord.Selection
Set objSection = objDoc.Sections(1)
objDoc.Sections(1).Footers(1).Range.ParagraphFormat.Alignment = 0
objDoc.Sections(1).Footers(1).Range.Bold = True
objDoc.Sections(1).Footers(1).Range.Text = ""
objSelection.Font.Bold = True
objSelection.Font.Underline = True
objSelection.ParagraphFormat.Alignment = 1
objSelection.Font.Size = "14"
objSelection.TypeText "I am a title"
objSelection.TypeParagraph()
objSelection.Font.Underline = False
objSelection.Font.Size = "12"
Const NUMBER_OF_ROWS = 2
Const NUMBER_OF_COLUMNS = 4
Set objRange = objDoc.Range()
objrange.Collapse wdCollapseEnd
objDoc.Tables.Add objRange, NUMBER_OF_ROWS, NUMBER_OF_COLUMNS
Set objTable = objDoc.Tables(1)
objTable.Style = "Πλέγμα Πίνακα" 'Greek MS Word needs style name on greek. "Table Grid" is the english one
objTable.Cell(1, 1).Range.Text = "Description"
objTable.Cell(1, 2).Range.Text = "Date"
objTable.Cell(1, 3).Range.Text = "Count"
objTable.Cell(1, 4).Range.Text = "Notes"
objTable.Cell(2, 1).Range.Text = "Hello there i am"+Chr(13)+"a big text"+Chr(13)+"but i am far bigger than you"
objTable.Cell(2, 2).Range.Text = "10/11/2018"
objTable.Cell(2, 3).Range.Text = "10.000"
objTable.Cell(2, 4).Range.Text = "nothing here"
objSelection.Tables(1).Select
objSelection.Collapse wdCollapseEnd
objDoc.SaveAs("C:\Users\George\AppData\Local\Temp\AAA - 13213908551013013192846.docx")
objWord.Quit
С помощью этого скрипта я получаю ![this table](https://i.stack.imgur.com/qcOyu.png)
Чего я хочу достичь: ![this.](https://i.stack.imgur.com/SpxoX.png)
Чтобы получить таблицу, которая находится на втором изображении, я сделал следующие шаги из MS Word. Щелкните правой кнопкой мыши в таблице -> Автонастройка -> Автонастройка с содержанием , затем снова Щелкните правой кнопкой мыши в таблице -> Автонастройка -> Автонастройка в окне .
Итак, я догадался, что запись этих шагов с помощью действия «Создать макрос» из MS Word даст мне ответ. Это «дало» мне эти строки:
objSelection.Tables(1).AutoFitBehavior (wdAutoFitContent)
objSelection.Tables(1).AutoFitBehavior (wdAutoFitWindow)
Я добавил их в свой скрипт прямо перед «Сохранить как ...», но в таблице нет никаких изменений. Итак ... Мне было интересно, есть ли что-то еще, я должен сделать, или я делаю что-то не так? Я не знаком с VBA.
ОС: Windows 10 x64
MS-Office: Microsoft Office профессиональный плюс 2016
РЕДАКТИРОВАТЬ - Ответ :
objSelection.Tables(1).AutoFitBehavior (1) 'word VBA does not support enumerations
objSelection.Tables(1).Rows.Alignment = 1