由于功能需求,需要将数据写入已经有的excel中(相当于模板,主要是其有特定格式),在尝试过程中,参考了一些博主的博客。因为数据和具体需求的不同,有时候也会出现各种问题,但总算是成功了。
我这里,因为需要写入的数据是包含一批字典数据的list,将其转为pandas的dataframe,然后去写入到原有excel中。注意:此次的excel格式是.xls而不是.xlsx。(貌似是xlrd没办法处理.xlsx,可以将.xlsx打开,另存为.xls格式,不可用直接改文件后缀的方式)
话不多说,直接上代码:
1、需要导入的包:

import xlrd
from xlutils.filter import process, XLRDReader, XLWTWriter

2、将数据写入原有excel模板中

def write_excel_xls_append(path, value):index = len(value)  # 获取需要写入数据的行数workbook_rb = xlrd.open_workbook(path,formatting_info=True)  # 打开工作簿w = XLWTWriter()process(XLRDReader(workbook_rb, 'unknown.xls'), w)workbook_wb = w.output[0][1]style_list = w.style_listfor n, sheet in enumerate(workbook_rb.sheets()):new_worksheet = workbook_wb.get_sheet(n)  # 获取转化后工作簿中的第一个表格for i in range(0, index):for j in range(0, value.shape[1]):#由于我们这excel前几行是标题、列名等。所以需要从特定行(+2)、列写入,顺延。style = style_list[sheet.cell_xf_index(i+2, j)]         #获取当前单元格的style# 写入数据(dataframe数据,所以用iloc取)new_worksheet.write(i+2, j, str(value.iloc[i][j]),style)  dateValue=datetime.datetime.now().strftime('%Y%m%d%H%M%S')savePath = './temporaryDocx/%s%s.xls'%(dateValue,'nameccccccxxxx')workbook_wb.save(savePath)return savePath

注意:因为我只需要模板,覆盖原有数据,所以如果想要在原有数据后增加,需要读出原有数据的行数。设为:rows_old,(可以结合后面测试代码去改)则:

style = style_list[sheet.cell_xf_index(i+rows_old, j)]         #获取当前单元格的style
new_worksheet.write(i+rows_old, j, str(value.iloc[i][j]),style)

3、其他测试的不用代码
因为有些是没办法保留格式,又或者出现某行格式问题。但是可以作为一些参考。

def write_excel_xls_append(path, value):
#测试一:数据能写入,没能保留格式,但是是在原数据后添加,取了rows_old# index = value.shape[0]  # 获取需要写入数据的行数# workbook = xlrd.open_workbook(path)  # 打开工作簿# sheets = workbook.sheet_names()  # 获取工作簿中的所有表格# worksheet = workbook.sheet_by_name(sheets[0])  # 获取工作簿中所有表格中的的第一个表格# rows_old = worksheet.nrows  # 获取表格中已存在的数据的行数# new_workbook = copy(workbook)  # 将xlrd对象拷贝转化为xlwt对象# new_worksheet = new_workbook.get_sheet(0)  # 获取转化后工作簿中的第一个表格# for i in range(0, index):#     for j in range(0, value.shape[1]):#         new_worksheet.write(i+rows_old, j, str(value.iloc[i][j]))  # 追加写入数据,注意是从i+rows_old行开始写入# new_workbook.save(path)  # 保存工作簿# print("xls格式表格【追加】写入数据成功!")#测试二:从特定行写入。未能保留格式# index = len(value)  # 获取需要写入数据的行数# workbook = xlrd.open_workbook(path,formatting_info=True)  # 打开工作簿# sheets = workbook.sheet_names()  # 获取工作簿中的所有表格# worksheet = workbook.sheet_by_name(sheets[0])  # 获取工作簿中所有表格中的的第一个表格# # rows_old = worksheet.ncols  # 获取表格中已存在的数据的行数# new_workbook = copy(workbook)  # 将xlrd对象拷贝转化为xlwt对象# new_worksheet = new_workbook.get_sheet(0)  # 获取转化后工作簿中的第一个表格# for i in range(0, index):#     for j in range(0, value.shape[1]):#         new_worksheet.write(i+2, j, str(value.iloc[i][j]))  # 追加写入数据,注意是从i+rows_old行开始写入# new_workbook.save('./documentTemplate/scheduleDocx/namexxxx.xls')  # 保存工作簿# print("xls格式表格【追加】写入数据成功!")

四、其他参考博客的链接。
Python 将数据写入文件(txt、csv、excel)
用xlwt和xlrd在不修改Excel单元格格式的情况下修改单元格内容
python3中关于excel追加写入格式被覆盖问题
python将字典列表导出为Excel文件的方法

五、关于只将字典的列表数据写入新的空白excel中的代码。(列名直接生成)

def export_excel(export):               #将字典列表export转换为DataFramepf = pd.DataFrame(list(export))pf = pf.reset_index()       #额外增加一行序号索引列(从0开始),原有df数据无此列#指定字段顺序order = ['index','project_name','project_department','linkman','linkman_phone','biding_state','con_biding_price','enterprise_name','state_name']pf = pf[order]#将列名替换为中文columns_map = {'index':'序号','project_name':'项目名称','project_department':'项目主管单位','linkman':"联系人",'linkman_phone':'手机号','biding_state':'招标情况','con_biding_price':'中标金额','enterprise_name':'中标单位','state_name':'整体进展情况'}pf.rename(columns = columns_map,inplace = True)#file_path = write_excel_xls_append('./documentTemplate/scheduleDocx/宜春市信息化项目进展情况表.xls',pf)#指定生成的Excel表格名称dateValue=datetime.datetime.now().strftime('%Y%m%d%H%M%S')file_path = pd.ExcelWriter('./temporaryDocx/%s%s.xlsx'%(dateValue,'宜春信息化项目进度计划表'))##替换空单元格pf.fillna(' ',inplace = True)# #输出pf.to_excel(file_path,encoding = 'utf-8',index = False)# #保存表格file_path.save()return file_path

python xlrd 写入已有的excel并保留原excel格式相关推荐

  1. python xlrd 拆分已合并的单元格

    python xlrd 拆分已合并的单元格 文件格式 代码案例(此案例在没有空值的情况下适用xls/xlsx均可) def chai_excel():import xlrdworkbook = xlr ...

  2. python xlrd写入表格数据溢出_python 使用 xlrd、xlwd读写excel表格

    xlrd和xlw介绍 ♦python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库. 如果要对其内容进行编辑的话稍稍有些麻烦,通常的做法是使用x ...

  3. python xlrd写入数据_python之xlrd读写excel

    前提摘要:1.安装好xlrd,cmd命令:pip install xlrd 2.引用xlrd模块 :import xlrd 1.使用xlrd模块读取Excel文件Workbook = xlrd.ope ...

  4. python xlwt写入已有表_Python中,添加写入数据到已经存在的Excel文件

    1.安装xlrd.xlwt.xlutils https://pypi.org/project/xlutils/ pip安装: cmd下输入: pip install xlrd #读取excle pip ...

  5. python xlrd xlwt pandas 模块 区别_python如何读写excel文件|python教程|python入门|python教程...

    https://www.xin3721.com/eschool/pythonxin3721/ python读写excel的方式有很多,不同的模块在读写的方法上稍有区别: 用xlrd和xlwt进行exc ...

  6. Python对Excel的常规操作 之 读取,写入(保留原格式写入)

    Python对Excel的常规操作 之 读取,写入(保留原格式) 前言 使用Python读写Excel常用的库有win32com和xlrd.xlwd.其中win32com可读可写,它对Excel的操作 ...

  7. Python xlrd 读取Excel数字 数字丢失精度 小数位太长 求大神的解决方法(已解决)

    Python xlrd 读取Excel数字 跟Excel显示不一样 小数位太长 求大神的解决方法(已解决) 十分想念顺店杂可... Excel显示的数据 Python代码读取 # -*- coding ...

  8. python xlwt写入excel_python xlwt模块生成excel文件并写入数据 xlrd读取数据

    python中一般使用 xlwt (excel write)来生成Excel文件(可以控制单元格格式),用 xlrd 来读取Excel文件,用xlrd读取excel是不能对其进行操作的. 1.xlrd ...

  9. python 列表写入excel_Python读写excel表格的方法一

    目的:实现用python做excel的读取.新增.修改操作. 环境:ubuntu 16.04 Python 3.5.2 用python读写文档,一般是操作txt文件或者可以用记事本打开的文件,因为这个 ...

  10. Python xlrd和xlwt操作Excel实现自动化

    ​ ​ 活动地址:CSDN21天学习挑战赛 目录 一.7大库优缺点对比 二.xlrd读取Excel表 1.安装xlrd模块 2.xlrd读取Excel表 1)打开Excel表 2)获取全部表名 3)指 ...

最新文章

  1. rtmp 推送h264 + aac 的数据
  2. BZOJ 1016 最小生成树计数
  3. 第二阶段冲刺第五天站立会议
  4. Chrome运行时性能瓶颈分析
  5. 和lua的效率对比测试_N99 KF94 KN95 真假口罩及 KN90 KN95面罩滤棉过滤效率对比测试...
  6. 计算机视觉论文-2021-07-07
  7. LTE网络架构及鉴权
  8. Java线程池在业务中的实践
  9. 详解嵌入式系统知识和接口技术总结
  10. PDF文件太大如何变小?
  11. windows 安全删除硬件并弹出媒体 选项灰色、无法弹出、无弹出选项
  12. win7电脑怎么提升开机速度
  13. HIT-SC-Lab1 Convex Hull的算法实现(JAVA)
  14. python自然语言处理实战源代码下载_NLP学习:涂铭《Python自然语言处理实战核心技术与算法》PDF+源代码...
  15. 智伴机器人三级分销模式_微信三级分销模式的可行性?
  16. ECharts 饼图切换数据源bug 开始没数据显示 切换或刷新后显示
  17. CDN的基本概念与原理
  18. eclipse切断_切断电源后在哪里传送天气频道
  19. Android studio 遇到Android SDK : Error when loading the SDK
  20. 嵌入式STM32深入之RTOS编程

热门文章

  1. 谁在追捧《这!就是街舞3》:佛系养生月光族
  2. 词频统计 matlab,5年cvpr论文词频分析,今年最火词——深度学习
  3. UE4自定义资源和编辑器(一):创建自定义资源
  4. excel转置怎么操作_技能篇:Excel数据处理小技巧
  5. C/C++——字符串拼接
  6. 编译原理(紫龙书)第2版习题答案
  7. java cmyk转rgb_图片 CMYK转RGB 代码
  8. 浏览器书签栏的小图标设置
  9. 圆柱体积怎么算立方公式_圆柱体积怎么算立方 高为3米则此圆柱的体积为27
  10. python刷博客点击量