python实现Excel自动化(一)

旧版Excel与新版Excel的区别
2007版的Excel默认使用xlsx格式,而2003默认使用xls格式。xls格式文件使用具有特定规律的二进制格式,核心结构是Excel特有的复合文档类型结构。xlsx文件与之不同它的核心结构是xml数据集结构,相比xls,xlsx结构更加清晰,相同数据占用空间更小。

使用xlrd读取Excel文件数据

import xlrd
book = xlrd.open_workbook('people.xlsx')

使用xlrd读取工作表数据

sheet = book.sheets()[0]
sheet = book.sheet_by_index(0)
sheet = book.sheet_by_name('Sheet1')

使用xlrd读取单元格数据 row与col都是0开始
sheet.cell(row,col)

xlwt将数据写入Excel文件

  1. #创建xls文件对象 book = xlwt.Workbook()
  2. #新建工作表 sheet = book.add_sheet(‘sheet1’)
  3. #写入数据 sheet.write(0,0’二两’)
  4. #保存为xls文件 book.save(‘people2.xls’)

xlutils复制Excel

使用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, '修改内容')

openpyxl写入数据

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开始的

openpyxl读取数据并修改

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)

openpyxl修改工作表中的样式

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

openpyxl读取大批量数据

当要处理特别大的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()

人生漫漫其修远兮,网安无止境。
一同前行,加油!

猜你喜欢

转载自blog.csdn.net/qq_45924653/article/details/107693711