python excel同时操作表格读写针对xls&xslx两种不同方式.md

由于xlsxxls使用的类库操作不一样,导致方法也是不一样的。

针对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')

引用参考

  • Python -- xlrd,xlwt,xlutils 读写同一个Excel
  • Python - openpyxl 读写操作Excel

你可能感兴趣的:(python excel同时操作表格读写针对xls&xslx两种不同方式.md)