0
点赞
收藏
分享

微信扫一扫

用XlsxWriter设置Excel的表格边框

1. 背景

在用Pandas做数据处理时,为了呈现方便,往往会将结果数据导出为Excel文件。但美中不足的是Pandas并不支持Excel文件格式的设置。
而XlsxWriter可以与Pandas无缝结合,并具有非常精细的Excel格式控制功能。XlsxWriter对于Python初学者来说有一定的学习门槛,可以查询官网文档进行学习。

2. 问题

笔者在使用时,卡在了表格边框的设置上面。

在设置好format后,采用worksheet.set_column()worksheet.set_row()对行或列进行边框设置时,要么出现:
“所选列全部设置了边框”

要么出现:

“所选行全部设置了边框”

的情况。

3. 解决方法

worksheet.conditional_format()

参数及使用方法详见官网说明文档

4. 举个栗子

我们采用官网教程的例子:tutorial01.xlsx

Excel表格中数据如下:

我们将该excel表格导入DataFrame,如下:

import pandas as pd

df = pd.read_excel('https://adamyide-1256435674.cos.ap-shanghai.myqcloud.com/tutorial01.xlsx', header = None, index = None)

df为:

接下来,开始设置表格边框:

writer = pd.ExcelWriter('tutorial01_bolder.xlsx',engine='xlsxwriter')
df.to_excel(writer,sheet_name='sheet1', header = None, index = None)

workbook = writer.book
worksheet = writer.sheets['sheet1']

format_border = workbook.add_format({'border':1})   # 设置边框格式
worksheet.conditional_format('A1:XFD1048576',{'type':'no_blanks', 'format': format_border}) #   这里是核心,根据条件来设置格式

workbook.close()

format_border = workbook.add_format({'border':1})中的'border':格式:上面代码中的1是index值。

Index Name Weight Style
0 None 0
1 Continuous 1 -----------
2 Continuous 2 -----------
3 Dash 1 - - - - - -
4 Dot 1 . . . . . .
5 Continuous 3 -----------
6 Double 3 ===========
7 Continuous 0 -----------
8 Dash 2 - - - - - -
9 Dash Dot 1 - . - . - .
10 Dash Dot 2 - . - . - .
11 Dash Dot Dot 1 - . . - . .
12 Dash Dot Dot 2 - . . - . .
13 SlantDash Dot 2 / - . / - .

worksheet.conditional_format('A1:XFD1048576',{'type':'no_blanks', 'format': format_border})可以查看官网说明,实际上是根据条件判断,进行格式化。

'A1:XFD1048576'是目前.xlsx格式文件支持的sheet大小,如果想提高运行效率,可以在已知表格大小的情况下,缩小这个区域。笔者没有尝试,应该会有效果吧。

这里注意参数中的'type',内容可以非常丰富,具体可以参考下官网Working with Conditional Formatting这一章。

最终出来的excel表格效果是这样:

已经可以满足我的需求了。

注意:以上代码框中的代码可以直接在装有pandas的环境中运行,文件会存在当前运行目录中。

5 感谢:

举报

相关推荐

0 条评论