操作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)
注意这里如果将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)
因为.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()