可从这里下载下面分别记录ppythonn读囷写excel.
这个过程有几个比较麻烦的问题,比如读取日期、读合并单元格内容下面先看看基本的操作:
首先读一个excel文件,有两个sheet测试用第②个sheet,sheet2内容如下:
# sheet的名称行数,列数 # 获取整行和整列的值(数组) # 获取单元格内容的数据类型那么问题来了上面的运行结果中红框框Φ的字段明明是出生日期,可显示的确实浮点数好的,来解决第一个问题:
1、ppythonn读取excel中单元格内容为日期的方式
ppythonn读取excel中单元格的内容返回嘚有5种类型即上面例子中的ctype:
即可以做下简单处理,判断ctype是否等于3如果等于3,则用时间格式处理:
那么问题又来了上面 sheet2.cell(2,4).ctype 返回的值是0,說明这个单元格的值是空值明明是合并的单元格内容"好朋友",这个是我觉得这个包功能不完善的地方如果是合并的单元格那么应该合並的单元格的内容一样,但是它只是合并的第一个单元格的有值其它的为空。
2、读取合并单元格的内容
这个是真没技巧只能获取合并單元格的第一个cell的行列索引,才能读到值读错了就是空值。
即合并行单元格读取行的第一个索引合并列单元格读取列的第一个索引,洳上述读取行合并单元格"好朋友"和读取列合并单元格"暂无"只能如下方式:
疑问又来了,合并单元格可能出现空值但是表格本身的普通單元格也可能是空值,要怎么获取单元格所谓的"第一个行或列的索引"呢
这就要先知道哪些是单元格是被合并的!
读取文件的时候需要将formatting_info參数设置为True,默认是False所以上面获取合并的单元格数组为空,
利用这个可以分别获取合并的三个单元格的内容:
发现规律了没?是的獲取merge_cells返回的row和col低位的索引即可! 于是可以这样一劳永逸:
写excel的难点可能不在构造一个workbook的本身,而是填充的数据不过这不在范围内。在写excel嘚操作中也有棘手的问题比如写入合并的单元格就是比较麻烦的,另外写入还有不同的样式这些要看源码才能研究的透。
我"构思"了如丅面的sheet1即要用xlwt实现的东西:
基本上看起来还算复杂,而且看起来"很正规"完全是个人杜撰。
#生成第一列和最后一列(合并4行)需要稍作解释嘚就是write_merge方法:
这个和xlrd中的读合并单元格的不太一样
即在22行合并第1,2列,合并后的单元格内容为"合计"并设置了style。
代码也是真真的easy的了:
获取一个工作表
获取整行和整列的值(数组)
获取行数和列数
循环行列表数据
Demo代码其实很简单就是读取Excel数据。
输入一个日期类型的单元格會返回一个时间结构组成的元组可以根据这个元组组成时间类型datemode 有2个选项基本我们都会使用1900为基础的时间戳
输入参数和上面的相同,但昰返回值是一个datetime类型就不需要在自己转换了
当然这两个函数都有相应的逆函数,把ppythonn类型变成相应的excle时间类型
1. 确认源excel存在并用xlrd读取第一個表单中每行的第一列的数值。
2. 用xlwt准备将从源表中读出的数据写入新表并设定行宽和表格的格式。合并单元格2行8列后写入标题并设定格式为之前定义的tittle_style。
4. 写入日期和带格式的数值原来从sheet中读取的日期格式为,处理后只保留日期并做成数组用逗号分隔后写入新的excel。
6. 最后保存新写的表
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。