使用Xlrd库或者openpyxl库,先按照内容的格式读取数据,然后在按指定格式写入
用pyxls、pyexcel这些库,支持读写excel文件,那么你要做的就是读取,再写入
sheet = workbook[‘zszxz’]
可以使用xlwt和xlrd等Python模块操作Excel表格中的数据。
xlwt可用于将数据写入xls文件,而xlrd用于读取xls文件中的数据。同时,xlwt也可以使用write_xls_excel函数将多个sheet合并为一个xls文件。
下面是一份示例代码,用于将指定xls文件的多个sheet中的数据复制粘贴到单独到工作表中。
import xlrd
import xlwt
def copy_sheet_data(src_book, src_sheet_idx, dst_book, dst_sheet_name, copy_row_start, copy_row_end, style_overwrite = True):
"""
将源工作表中指定行数据复制到目标工作表中
:param src_book: 源工作簿对象
:param src_sheet_idx: 源工作表索引
:param dst_book: 目标工作簿对象
:param dst_sheet_name: 目标工作表名称
:param copy_row_start: 复制的开始行
:param copy_row_end: 复制的结束行
:param style_overwrite: 是否覆盖样式
"""
if not isinstance(src_book, xlrd.book.Book):
raise ValueError('src_book必须是xlrd打开的workbook对象')
if not isinstance(dst_book, xlwt.Workbook):
raise ValueError('dst_book必须是xlwt打开的workbook对象')
# 获取源工作表
src_sheet = src_book.sheet_by_index(src_sheet_idx)
dst_sheet = dst_book.add_sheet(dst_sheet_name)
merged_cells = src_sheet.merged_cells
merge_areas_list = []
if len(merged_cells) > 0:
i = -1
for area in merged_cells:
if i != area[0]:
# 新的范围
merge_areas_list.append(area)
else:
merge_areas_list[-1] = (
merge_areas_list[-1][0],
merge_areas_list[-1][1],
max(merge_areas_list[-1][2], area[2]),
max(merge_areas_list[-1][3], area[3])
)
i = area[0]
# 复制表头
for j in range(src_sheet.ncols):
dst_sheet.write(0, j, src_sheet.cell_value(0, j), \
xlwt.Style.easyxf(src_sheet.cell_xf_index(0, j) if style_overwrite else 0))
# 复制数据
for i in range(copy_row_start, copy_row_end):
for j in range(src_sheet.ncols):
dst_sheet.write(i - copy_row_start + 1, j, src_sheet.cell_value(i, j), \
xlwt.Style.easyxf(src_sheet.cell_xf_index(i, j) if style_overwrite else 0))
# 处理合并单元格
for area in merge_areas_list:
#assert len(area) == 4
for row in range(max(area[0], copy_row_start), min(copy_row_end, area[2])+1):
start_col, end_col = None, None
for col in range(area[1], area[3]+1):
if src_sheet.cell(row, col).value:
end_col = col
if end_col is not None:
if start_col is None:
start_col = area[1]
dst_sheet.write_merge(row - copy_row_start + 1, row - copy_row_start + 1, \
start_col, end_col, src_sheet.cell(row, start_col).value, \
xlwt.Style.easyxf(src_sheet.cell_xf_index(row, start_col) if style_overwrite else 0))
# 源xls文件路径
src_xls_file = 'source_xls.xls'
# 目标xls文件路径
dst_xls_file = 'target_xls.xls'
src_book = xlrd.open_workbook(src_xls_file)
# 循环复制所有sheet
for i in range(src_book.nsheets):
src_sheet = src_book.sheet_by_index(i)
# 复制的目标工作表名称
dst_sheet_name = src_sheet.name
dst_book = xlwt.Workbook()
copy_sheet_data(src_book, i, dst_book, dst_sheet_name, 1, src_sheet.nrows)
# 将每个sheet的值复制到同一个xls文件的不同sheet中
with open(dst_xls_file, 'ab') as f:
dst_book.save(f)