Python3对Excel的读写操作(实现将两个.xls文档按照列追加的方式合并为一个xlsx文档)

    技术2024-08-09  78

    Python3对Excel的读写操作

    1、安装所需要的包

    操作xls、xlsx格式的表格文件,需要用到的库如下:

          读取:xlrd

          写入:xlwt

          修改(追加写入):xlutils

    操作xlsx格式的表格文件,需要用到的库如下:

           读取/写入:openpyxl

    ( xlrd模块0.8版本后,对于xlsx格式的表格,使用xlrd也是可以读取的,但是不能写入,会出现文档打不开的情况)

    # import xlrd # import xlwt # data = xlrd.open_workbook('result1.xlsx') #打开需要操作的Excel文档,xlsx,xls均可 # table = data.sheet_by_index(0) #获取工作簿中的表格 #sheet = workbook.add_sheet(sheet_name) # 在工作簿中新建一个表格 # nrows = table.nrows #获取行数 # print(nrows) # ncols = table.ncols #获取列数 # print(ncols) # rowvalue = table.row_values(1) #获取工作簿中的第1行 # print(rowvalue) # colvalue = table.col_values(1) #获取工作簿中的第1列 # print(colvalue)

    2、对excel文档使用进行追加

    注意这里如果将Try1.xls文档改为Try1.xlsx文档则会出现报错,这是因为xlrd模块0.8版本后不支持以xlsx为后缀名文件

    import xlrd from xlutils.copy import copy def Excel_append(path, value): index = len(value) # 获取需要写入数据的行数 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, len(value[i])): new_worksheet.write(i+rows_old, j, value[i][j]) # 追加写入数据,注意是从i+rows_old行开始写入 new_workbook.save(path) # 保存工作簿 return 0 book_name_xls = 'Try1.xls' value = [["小兰", "小兰", "小兰", "小兰", "小兰", 123, 234], ["小兰", "小兰", "小兰", "小兰", "小兰", 2352], ["小兰", "小兰", "小兰", "小兰", "小兰"]] Excel_append(book_name_xls, value)

    3、实现将两个Excel文档(.xls文档)按照列追加的方式合并为一个(.xlsx文档)

    因为.xls文档只有256列可能无法放下所有的数据,而.xlsx文档的列数会更多。

    import xlrd import xlwt import xlsxwriter file_name = "result.xlsx" workbook = xlsxwriter.Workbook(file_name) worksheet = workbook.add_worksheet('Sheet1') data = xlrd.open_workbook('Try1.xls') #读取try1文档,按照列追加方式写入result文档中 table = data.sheet_by_index(0) ncols1 = table.ncols for i in range(ncols1): colvalue = table.col_values(i) worksheet.write_column(0,i,colvalue) data = xlrd.open_workbook('Try2.xls') #读取try2文档,接着在result文档中按照列追加方式写入 table2 = data.sheet_by_index(0) ncols2 = table2.ncols for i in range(ncols2): colvalue2 = table2.col_values(i) worksheet.write_column(0,i+ncols1,colvalue2) #关闭工作簿 workbook.close()

     

    Processed: 0.011, SQL: 9