我一直在尝试将 Google 表格转换为 PDF 文件。 (这是输入的 Google Sheets。)我浏览了互联网并开始使用 gspread 库将 Google Sheets 转换为 HTML,并使用 pdfkit 将其转换为 PDF。下面的脚本有效,但正如预期的那样,工作表的所有格式数据(包括合并的单元格)都会丢失。
import gspread
import pdfkit
wkhtmltopdf = r"wkhtmltopdf.exe"
config = pdfkit.configuration(wkhtmltopdf=wkhtmltopdf)
gc = gspread.service_account()
sh = gc.open("Test")
sheet = sh.sheet1.get_all_values()
table = ""
for row in sheet:
table += "<tr>"
for data in row:
table += f"<td>{data}</td>"
table += "</tr>"
html = f'''
<html>
<body>
<table>
{table}
</table>
</body>
</html>
'''
pdfkit.from_string(html, "test.pdf", configuration=config)
而this就是结果。 我希望合并的单元格保持合并状态,并且格式应保留。从 gspread 文档中,我没有找到任何函数来了解哪些单元格被合并,或返回格式。
编辑:
正如@LimeHusky提到的,我可以使用
colspan
标签来合并单元格,但我关心的是区分正常单元格和合并单元格,以及如果合并,合并到什么程度(合并的单元格数量)。
其他格式也一样。
为了澄清起见,这就是变量
sheet
返回的内容。
[['ID00001', '', '', '', ''],
['', '', '', '', ''],
['Merged', '', '', '', ''],
['1', 'A', '10', '11', '70'],
['2', 'B', '20', '22', '80'],
['3', 'C', '30', '33', '70'],
['4', 'D', '40', '44', '90'],
['5', 'E', '50', '55', '70'],
['6', 'F', '60', '66', '100']]
任何解决问题的解决方案将不胜感激。
此外,我并不是专门要求使用 HTML 的解决方案。我只需要将 Google Sheet 转换为具有所有格式的 PDF 文件,并控制要渲染的行和不渲染的行。
我尝试修改你的Python代码并添加条件colspan和css文本对齐。
修改后的代码:
sheet = [
['ID00001', '', '', '', ''],
['', '', '', '', ''],
['Merged', '', '', '', ''],
['1', 'A', '10', '11', '70'],
['2', 'B', '20', '22', '80'],
['3', 'C', '30', '33', '70'],
['4', 'D', '40', '44', '90'],
['5', 'E', '50', '55', '70'],
['6', 'F', '60', '66', '100']
]
table = ""
for rowIndex, row in enumerate(sheet):
table += "<tr>"
for data in row:
if rowIndex == 0 or rowIndex == 2: # Check for the ID and Merged rows
if data: # Only add the data if it's not empty
table += f"<td colspan='5' style='text-align: center;'>{data}</td>"
break
elif data == "": # Skip empty cells
continue
else:
table += f"<td>{data}</td>"
table += "</tr>"
html = f'''
<html>
<body>
<table border="1">
{table}
</table>
</body>
</html>
'''
print(html)
示例输出:
参考: