旧版Excel与新版Excel的区别
2007版的Excel默认使用xlsx格式,而2003默认使用xls格式。xls格式文件使用具有特定规律的二进制格式,核心结构是Excel特有的复合文档类型结构。xlsx文件与之不同它的核心结构是xml数据集结构,相比xls,xlsx结构更加清晰,相同数据占用空间更小。
import xlrd
book = xlrd.open_workbook('people.xlsx')
sheet = book.sheets()[0]
sheet = book.sheet_by_index(0)
sheet = book.sheet_by_name('Sheet1')
使用xlrd读取单元格数据 row与col都是0开始
sheet.cell(row,col)
使用xlutils修改数据
使用xlutils的copy方法将xlrd所属对象转为xlwt所属对象,从而实现直接修改工作表中已有数据的目的。
from xlutils.copy import copy
rd_book = xlrd.open_workbook('people.xlsx')
rd_sheet = rd_book.sheet()[0]
wt_book = copy(rd_book)
wt_sheet = wt_book.get_sheet(0)
wt_sheet.write(row, 0, '修改内容')
xlwt只支持生成xls格式的Excel,无法将数据写入xlsx格式的Excel文件中。openpyxl库可以将数据写入到xlsx格式的Excel中。
import openpyxl
//创建工作薄对象
wb = openpyxl.Workbook()
//sheet 工作薄对象
ws = wb.active
//creat_sheet()创建新的worksheet
ws2 = wb.create_sheet("NewTitle", 1)
ws2.cell(row=1, colimn=1, value='First')
wb.save('test.xlsx')
openpyxl的下标是从1开始的
import openpyxl
//打开已有的xlsx文件
wb = openpyxl.load_workbook('test.xlsx')
//返回该Excel文件中所有的sheet
print(wb.sheetnames)
ws = wb['NewTitle']
//改变标签颜色
ws.sheet_properties.tabColor = '99CCCC'
ws.cell(row=1,column=1, value='new first')
wb.save(test2.xlsx)
import openpyxl
from openpyxl.styles import Font, colors, Alignment
//创建Excel文件对象
wb = openpyxl.Workbook()
ws = wb.active
rows = [
['ID', 'Name', 'age'],
[1, '张三', 28],
[2, '李四', 25],
[3, '王五', 40],
[4, '赵六', 23]
]
for row in rows:
//添加多行
ws.append(row)
font = Font(name='微软雅黑', size=25, italic=True, color=colors.RED, bold=True)
ws['A1'].font = font
//第五行行高,下标从1开始
ws.row_dimensions[5].height = 40
//A列列宽
ws.column_dimensions['A'].width = 30
//合并单元格,往左上角写入数据
//合并一行中的几个单元格
ws.merge_cells('A9:C7')
//合并一个矩形区域中的单元格
ws.merge_cells('A9:C13')
ws['A9'] = '合并单元格'
ws.save('test3.xlsx')
当要处理特别大的Excel时,就需要使用openpyxl的只读(read_only)或只写(write_only),在只读或只写模式下,openpyxl可以使用恒定的内存来处理无限的数据,其原理就是先处理一部分,处理完后,释放内存,然后再读入部分数据进行处理。
只读模式:
from openpyxl import load_workbook
# read_only设置为True
wb = load_workbook(filename='big.xlsx', read_only=True)
ws = wb['big_sheet']
for row in ws.rows:
for cell in row:
print(cell.value)
只写模式:
from openpyxl import Workbook
from openpyxl.cell import WriteOnlyCell
from openpyxl.comments import Comment
from openpyxl.styles import Font
# write_only设置为True
wb = Workbook(write_only = True)
ws = wb.creat_=sheet()
cell = WriteOnlyCell(ws, value="只写状态下的内容")
cell.cont = Font(name='微软雅黑', size=36)
# 插入Excel批注
cell.comment = Comment(text="这是一个批注", author="二两")
# 再只写工作薄中,只能用append()
ws.append([cell, 3.14, None])
wb.save('write_only_file.xlsx')
注: 只写模式下,不会包含任何工作表,要使用create_sheet()方法去创建 只写状态下,单元格想要具有样式或注释,使用openpyxl.cel.WriteOnlyCell()
人生漫漫其修远兮,网安无止境。
一同前行,加油!