python输出文本至文档_python 输出文档到world

使用python+word来做文档的提取,于是想用docx三方库,我用的是python 3.6,开发环境为Anaconda3,于是通过Anaconda 的Anaconda Prompt命令窗口安装docx,输入一下指令:

pip install docx

命令窗口显示成功后,在开发环境中输入import docx测试三方库有没有成功,显示Import Error: No module named 'exceptions',查了相关资料

When import docx in python3.3 I have error ImportError: No module named 'exceptions',

原来是通过命令行下载的docx安装包还没有完全兼容python3,估计这个安装包还只兼容python 2(python2 和python3差别还是挺大的,虽然现在python 3出来很久了,但是不少三方库还没有更新),因此需要自己找一个兼容的包进行安装,地址为:

找到python_docx-0.8.6-py2.py3-none-any.whl,点击下载到本地,然后在Anaconda Prompt命令窗口中输入一下指令:

pip uninstall docx (把原来安装的docx卸载掉),这一步不一定是必须要。

pip install python_docx-0.8.6-py2.py3-none-any.whl

在开发环境中输入import docx测试三方库有没有成功,没有报错就是安装成功!

具体安装步骤:

1、 下载安装包:

下载python_docx-0.8.6-py2.py3-none-any.whl

2、 把下载得安装包放到路径:D:\Python_Training下

3、 Anaconda Prompt命令窗口中输入一下指令(如下图所示):

d:

cd D:\Python_Training

pip install python_docx-0.8.6-py2.py3-none-any.

在开发环境中输入import docx测试三方库有没有成功,没有报错就是安装成功!!!

'''

注意:

#需要安装python_docx

总结:若出现DLL load failed,将lxml版本从3.8.0改为3.7.3即可解决。

若接着出现No module named ‘exceptions',安装python-docx即可

'''

9.2 python_docx使用

举个简单得demo来说明如何使用python_docx如何来自动生成报告。

具体步骤如下:

1、这里为了方便,我们实现将画图生成得图片预先存放在一个文件夹:

注:这里得数据图片是根据实际报告里面得内容,根据画图程序(使用python画图)存在这个路径下面的。

2、执行下面的程序:python_file_to_world.py

3、生成得报告文档如下(根据实际需要,可以生成更复杂的报告,后续我们逐步介绍):

具体执行程序,参照程序:python_file_to_world.py

import os

import pandas as pd

import docx

from docx.shared import Inches

#from docx import Document

#from docx.shared import Inches

CURRENT_DIR = os.path.abspath(os.path.dirname(__file__))

def save_df_to_doc(document, test_df):

'''

将结果按照dataframe的形式存入doc文件

:param document: 存入的文档类

:param test_df: 需要保存的df

:return:

'''

# add_paragraph表示添加一个段落

document.add_paragraph(u'各个指标的平均值表格\n')

# 添加一个表格--行数和列数,行数多加一行,需要将列名同时保存

t = document.add_table(test_df.shape[0] + 1, test_df.shape[1])

# 将每列列名保存到表格中

for j in range(test_df.shape[-1]):

t.cell(0, j).text = test_df.columns[j]

# 将每列数据保存到新建的表格中

for i in range(test_df.shape[0]):

for j in range(test_df.shape[-1]):

# 第一行保存的是列名,所以数据保存时,行数要加1

t.cell(i + 1, j).text = str(test_df.values[i, j])

if __name__ == '__main__':

# 生成要存储的数据形式

example_df = pd.DataFrame([])

example_df['name'] = ['test_A', 'test_B', 'test_C']

example_df['acc'] = [0.734, 0.765, 0.875]

example_df['recall'] = [0.834, 0.768, 0.829]

example_df['auc'] = [0.843, 0.921, 0.897]

# 将name列设置为索引列

# example_df = example_df.set_index('name')

# 准备文件,开始存储数据和图片

document = docx.Document()

# 给该文档加上标题add_heading,最后的1,表示该标题为1级标题

# 文档中换行的命令为'\n'

document.add_heading(u'测试存储数据和图片到word文档中\n\n',1)

# 将df保存到document中

save_df_to_doc(document, example_df)

#将文件夹中的图片,遍历保存到document文件中

fig_path=os.path.join(CURRENT_DIR,'D:/Python_Training/python_for_48hour/fig/')

fig_list = os.listdir(fig_path)

for fig in fig_list:

if '.jpg' in fig or '.png' in fig or '.jpeg' in fig:

# 将已保存的png文件,保存到word文档中

document.add_paragraph('\n\n\n' + fig + u'图片显示保存') # 插入段落

# add_picture表示在document中加入图片,width表示图片的大小,Inches英寸

document.add_picture(fig_path + fig, width=Inches(6.5)) # 向文档里添加图片

# document要保存的地址和名字,如果地址不存在,这生成该地址文件夹

doc_save_path = os.path.join(CURRENT_DIR, 'result/')

if not os.path.exists(doc_save_path):

os.system('mkdir -p ' + doc_save_path)

doc_name = 'test_result.docx'

# 保存文档

document.save(doc_save_path + doc_name) # 保存文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值