大连建站系统模板,智能获客系统,我为群众办实事心得体会,为什么 要建设网站python-docx把dataframe表格添加到word文件中思路较为简单#xff1a;
先把dataframe格式转变为table新建一个段落#xff1a;document.add_paragraph()把table添加到这个段落下方
效果图 示例代码
from docx import Document, oxml
import pandas as pd
import numpy as …python-docx把dataframe表格添加到word文件中思路较为简单
先把dataframe格式转变为table新建一个段落document.add_paragraph()把table添加到这个段落下方
效果图 示例代码
from docx import Document, oxml
import pandas as pd
import numpy as np
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
import random# 设置 table 的边框用法与 cell 类似
def set_table_boarder(table, **kwargs):Set tables borderUsage:set_table_border(cell,top{sz: 12, val: single, color: #FF0000},bottom{sz: 12, color: #00FF00, val: single},left{sz: 24, val: dashed},right{sz: 12, val: dashed},)borders OxmlElement(w:tblBorders)for tag in (bottom, top, left, right, insideV, insideH):edge_data kwargs.get(tag)if edge_data:any_border OxmlElement(fw:{tag})for key in [sz, val, color, space, shadow]:if key in edge_data:any_border.set(qn(fw:{key}), str(edge_data[key]))borders.append(any_border)table._tbl.tblPr.append(borders)return tabledef set_table_singleBoard(table):为表格添加边框return set_table_boarder(table,top{sz: 4, val: single, color: #000000},bottom{sz: 4, val: single, color: #000000},left{sz: 4, val: single, color: #000000},right{sz: 4, val: single, color: #000000},insideV{sz: 4, val: single, color: #000000},insideH{sz: 4, val: single, color: #000000})def convert_df_to_table(document, dataframe: pd.DataFrame, index_listNone, column_listNone):把table转为dataframe:param document: 文档对象:param dataframe: dataframe格式数据:param index_list: 最左边一列显示的内容:param column_list: 第一行列名称需要显示的内容rows dataframe.shape[0]cols dataframe.shape[1]if index_list is not None:cols 1if column_list is not None:rows 1table document.add_table(rowsrows, colscols)row_i 0col_i 0if index_list is not None:raiseif column_list is not None:hdr_cells table.rows[row_i].cellsfor _col_i, _v in enumerate(column_list):hdr_cells[_col_i].text str(_v)row_i 1for _i, series_info in enumerate(dataframe.iterrows()):series series_info[1]hdr_cells table.rows[row_i _i].cellsfor _c_i, _cell_value in enumerate(series):hdr_cells[col_i _c_i].text str(_cell_value)return tabledef main():# 1. 把要插入的数据调整为dataframe格式dataframe pd.DataFrame({列1: [round(random.random(), 2) for _ in range(3)],列2: [round(random.random(), 2) for _ in range(3)],列3: [round(random.random(), 2) for _ in range(3)],})document Document()# 2. 插入表格table convert_df_to_table(document, dataframe, column_listdataframe.columns.tolist())table set_table_singleBoard(table) # 表格添加边框base_paragraphs document.add_paragraph(下面插入表格)base_paragraphs._p.addnext(table._tbl)# 3. 保存修改后的结果document.save(测试_添加表格.docx) # 保存后导出if __name__ __main__:main()上述代码会得到如下效果图