教你用Python写报表

软件设计有两种方式:一种方式是,使软件过于简单,明显没有缺陷;另一种方式是,使软件过于复杂,没有明显的缺陷

我们python有数量庞大,各种各样的库,那有没有一种库用来帮我们操作pdf呢,有的 ,reportlab

官方介绍:

Generating PDFs from Wall Street to Wikipedia

We build solutions to generate rich, attractive and fully bespoke PDF documents at incredible speeds. This can let you serve personalised documents in real time, produce high-quality output, and support all kinds of delivery from web downloads through to personalised digital print.

简要来说,就是 快速实时生成丰富的、定制的PDF文档。用于实时个性化定制,生成高质量的输出,支持各种交付,可以从网络下载到个人输出等。

要想操作pdf,我们首先得有一个pdf

file_name="paragraph_text.pdf"
f =open(file_name,"wb")

该库还提供pdf加密方法

enc=pdfencrypt.StandardEncryption("liuyue",canPrint=1)
 def __init__(self, userPassword, ownerPassword=None, canPrint=1, canModify=1, canCopy=1, canAnnotate=1, strength=40)

该方法有7个参数,分别是控制用户密码,所有者密码 能不能打印,能不能修改,能不能赋值,能不能注释,最后一个没弄清楚,好像是控制修订版本的?

不过代码中有说明这些加密措施强度很弱,不要依赖这个进行加密

doc=SimpleDocTemplate(f,author="liuyue",title="第一个报表",leftMargin=15,
                      rightMargin=15,pdfencrypt=enc)

调用SimpleDocTemplate生成文档对象,第一个参数代表文件,author传作者,title传标题,leftMargin和rightMargin分别控制左右边距,最后一个pdfencrypt是加密措施

要想在里面写东西可以通过multiBuild,看名字就知道这是个建立多行的东西,需要传一个列表承载要写入的信息

要写入的信息必要要装入规定的对象中,我们来写一个生成承载文字对象的方法

def generate_paragrap(content,align="center",style_name="Heading3"):
    """
    :param content: 文字内容
    :param align: 对齐方式
    :param style_name: 样式名称
    :return: Paragraph instance
    """
    text="""<para autoLeading="off" fontSize=10 align=%s><b>
    <font face="FZLTXH">%s</font></b></para>"""%(align,content)
    return Paragraph(text,getSampleStyleSheet()[style_name])

可以注意到控制文字样式是通过html的style

datas=[]
datas.append(generate_paragrap("很高兴认识你,我叫流月"))

doc.multiBuild(datas)
f.close()

完毕,运行程序便会有一个pdf文件在你指定的路径下生成,但打开pdf文件你会发现一个问题,乱码,你换成英文就好了,但如果我们想要显示中文怎么办呢?

我们可以通过引入字体的办法来解决这个问题,字体文件需要自己去网上找

from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
pdfmetrics.registerFont(TTFont("FZLTXH","FZLTXIHK.TTF"))

这样一个带有文字的pdf就生成了,如果你想添加更多的内容可以不断向列表中添加,不断改变样式,附上一份完整代码

from reportlab.platypus import SimpleDocTemplate
from reportlab.platy
  • 0
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
是的,Python可以用来自动读取数据并生成Excel报表,同时通过一些技巧可以美化报表,使其更加易读和美观。下面是一个简单的示例,演示如何使用Python和第三方库来生成Excel报表。 首先,需要安装openpyxl库来处理Excel文件。可以使用以下命令来安装: ``` pip install openpyxl ``` 接下来,我们可以使用openpyxl库来创建一个Excel工作簿,并添加一些数据和图表。以下是一个示例代码,其中包含了一些注释来帮助您理解代码: ```python import openpyxl from openpyxl.chart import BarChart, Reference # 创建一个新的Excel工作簿 workbook = openpyxl.Workbook() # 选择第一个工作表 worksheet = workbook.active # 添加一些数据到工作表中 worksheet['A1'] = 'Name' worksheet['B1'] = 'Score' worksheet['A2'] = 'Alice' worksheet['B2'] = 85 worksheet['A3'] = 'Bob' worksheet['B3'] = 92 worksheet['A4'] = 'Charlie' worksheet['B4'] = 78 # 创建一个柱状图,将数据添加到图表中 chart = BarChart() data = Reference(worksheet, min_col=2, min_row=1, max_row=4) categories = Reference(worksheet, min_col=1, min_row=2, max_row=4) chart.add_data(data) chart.set_categories(categories) # 将图表添加到工作表中 worksheet.add_chart(chart, 'D1') # 保存Excel工作簿 workbook.save('report.xlsx') ``` 上面的代码将生成一个包含一些数据和一个柱状图的Excel报表。您可以根据需要修改数据和图表的类型和样式,以生成符合您要求的报表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幽蓝丶流月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值