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

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()

 

你可能感兴趣的:(python)