автоматизировать печать существующего отчета MS Access (желательно с Python, но открытым для альтернатив) - PullRequest
0 голосов
/ 16 октября 2018

У меня около 30 .accdb файлов, все содержат отчет с таким же именем.Я хотел бы автоматизировать сохранение отчетов в формате PDF для последующей печати.Вот и все, никаких запросов, никаких изменений, просто распечатайте сохраненный отчет в PDF.

Я могу успешно открыть базу данных, но не знаю, как сделать все остальное.

import win32com.client

a = win32com.client.Dispatch("Access.Application")
a.visible = 1  
filename = r'C:\bla\Exam_1\PrintTest\db.accdb'
db = a.OpenCurrentDatabase(filename)

report_name = 'My_Report'

a.Quit()

FWIW, я учитель, и это поможет мне с оценкой работ и снимет бремя с напряженных студентов, печатающих в конце экзамена.Использование Windows 10.

Я открыт для использования любого другого языка сценариев (powershell?), Который поможет мне легко автоматизировать эту задачу.

1 Ответ

0 голосов
/ 16 октября 2018

Вы можете использовать DoCmd.OpenReport для автоматического открытия и печати отчетов.

import win32com.client

a = win32com.client.Dispatch("Access.Application")
a.visible = 1  
filename = r'C:\bla\Exam_1\PrintTest\db.accdb'
db = a.OpenCurrentDatabase(filename)

report_name = 'My_Report'
a.DoCmd.OpenReport('My_Report')
a.Quit()

По умолчанию DoCmd.OpenReport будет печатать отчет на принтер, указанный в настройках отчета.У меня есть код, чтобы открыть его в окне предварительного просмотра и указать принтер.

Если вы хотите экспортировать в PDF, вы также можете автоматизировать это:

import win32com.client

a = win32com.client.Dispatch("Access.Application")
a.visible = 1  
filename = r'C:\bla\Exam_1\PrintTest\db.accdb'
db = a.OpenCurrentDatabase(filename)

report_name = 'My_Report'
a.DoCmd.OutputTo(3, report_name, r'PDF Format (*.pdf)', r'C:\Path\To\file.pdf')
a.Quit()
...