由于
xlsx
和xls
使用的类库操作不一样,导致方法也是不一样的。
针对xls如何同时操作同一表格读写
用xlrd读取excel是不能对其进行操作的:xlrd.open_workbook()方法返回xlrd.Book类型,是只读的,不能对其进行操作。而xlwt.Workbook()返回的xlwt.Workbook类型的save(filepath)方法可以保存excel文件
幸好xlutils(依赖于xlrd和xlwt)
提供复制excel文件内容和修改文件的功能,在xlrd.Book和xlwt.Workbook之间建立了一个管道,完美解决这个问题。
代码案例:
# 得当对应读的工作表,写的工作表,还有路径
def OpenXlxs():
readOpenXlsx = xlrd.open_workbook(xlsxName)
readXlsxSheet = readOpenXlsx.sheet_by_name('userInfo')
# copy管道作用
writeOpenXlsx = copy(readOpenXlsx)
return readXlsxSheet,writeOpenXlsx,xlsxName
# 进行读操作
def readXlsx(readXlsxSheet, writeOpenXlsx, xlsxName):
#获取行数
......
### 进行写操作
def writeXlsx(writeOpenXlsx,row,xlsxName):
# 前面已经通过 copy 方法获取了writeOpenXlsx
# 通过get_sheet()获取的sheet有write()方法
writeXlsxSheet = writeOpenXlsx.get_sheet(0)
....
writeXlsxSheet.write(row,7,'Pass')
writeOpenXlsx.save(xlsxName)
其实使用copy
把同一个表格复制加载到内存上,然后针对修改添加的写入,然后把copy到的原表一并带上。
针对xlsx读取日期为数字,如何进行转化
使用
openpyxl
进行读写,就相当简单了,直接赋值即可。
示例代码:
from openpyxl import load_workbook
excel=load_workbook('E:/test.xlsx')
#获取sheet:
table = excel.get_sheet_by_name('Sheet1') #通过表名获取
#获取单元格值:
Data=table.cell(row=row,column=col).value #获取表格内容,是从第一行第一列是从1开始的,注意不要丢掉 .value
# 对单元格进行写操作
table.cell(row=row,column=col).value='11' # 注意有可能需要进行格式转化一下即可
# 最后save,进行保存一下
excel.save('E:/test.xlsx')