excel

此生再无相见时 提交于 2020-10-30 06:02:10

[TOC]


xlwt

打开一个 Excel 后再写数据直接保存就可以了,不用再重新打开

语法 作用
xlwt_book = xlwt.Workbook(encoding='utf-8') 新建工作薄
xlwt_sheet = xlwt_book.add_sheet('sheet1') 新建 Sheet
xlwt_sheet.write(0,0,'文本') 通过行列索引写入数据
xlwt_book.save(r'c:\test.xls') 保存
from xlwt import *

xlwt_book = Workbook()
xlwt_sheet = xlwt_book.add_sheet('sheet1')

for i in range(1,10):
    style = XFStyle()
    style.num_format_str = 'mm:ss'
    xlwt_sheet.write(i, 0,'文本', style)
    xlwt_sheet.write(0, i, '文本', style)

xlwt_book.save('demo.xls')

类别

语法 作用
style = XFStyle() 实例化类别
style.num_format_str = 'mm:ss' 设置类别
xlwt_sheet.write(1, 1, '文本', style) 根据索引写入单元格
'general'
'0'
'0.00'
'###0'
'###0.00'
'"$"###0_);("$"###'
'"$"###0_);[Red]("$"###'
'"$"###0.00_);("$"###'
'"$"###0.00_);[Red]("$"###'
'0%'
'0.00%'
'0.00E+00'
'# ?/?'
'# ??/??'
'M/D/YY'
'D-MMM-YY'
'D-MMM'
'MMM-YY'
'h:mm AM/PM'
'h:mm:ss AM/PM'
'h:mm'
'h:mm:ss'
'M/D/YY h:mm'
'_(###0_);(###0)'
'_(###0_);[Red](###0)'
'_(###0.00_);(###0.00)'
'_(###0.00_);[Red](###0.00)'
'_("$"* ###0_);_("$"* (###0);_("$"* "-"_);_(@_)'
'_(* ###0_);_(* (###0);_(* "-"_);_(@_)'
'_("$"* ###0.00_);_("$"* (###0.00);_("$"* "-"??_);_(@_)'
'_(* ###0.00_);_(* (###0.00);_(* "-"??_);_(@_)'
'mm:ss'
'[h]:mm:ss'
'mm:ss.0'
'##0.0E+0'
'@'

居中

语法 作用
style = XFStyle() 实例化类别
al.horz = 0x02 设置水平居中
al.vert = 0x01 设置垂直居中
style.alignment = al 设置好的参数导入style
ws.write(1, 1, '文本', style) 根据索引写入单元格

框线与合并

语法 作用
borders = Borders() 样式实例化
borders.left = 2 2号左框线
borders.right = 2 2号右框线
borders.top = 2 2号上框线
borders.bottom = 2 2号下框线
style.borders = borders 设置好的参数导入 Style
sheet.write_merge(2,2,3,3,'文本',style) 为第 4 行,第 5 列添加样式。
sheet.write_merge(3,3,4,5,'文本',style) 合并第 3 行,4 和 5 列。

为 1-10 行添加样式。

for i in range(0, 10):
    borders = Borders()
    borders.left = 2
    borders.right = 2
    borders.top = 2
    borders.bottom = 2
    style.borders = borders
    sheet.write_merge(i,i,1,1,'',style)

单元格背景色

语法 作用
style = XFStyle() 赋值 style 为 XFStyle(),初始化样式
pattern = Pattern() 创建一个模式
pattern.pattern = Pattern.SOLID_PATTERN 设置其模式为实型
pattern.pattern_fore_colour = 1 设置单元格背景色
style.pattern = pattern 将赋值好的模式参数导入 Style
sheet.write_merge(1, 1, 1, 1, '文本', style) 写入单元格

字体样式

语法 作用
style = XFStyle() 赋值 style 为 XFStyle(),实例化样式
fnt = Font() 创建一个文本格式,包括字体,字号和颜色样式特性。
fnt.name = u'微软雅黑' 设置字体为微软雅黑
fnt.colour_index = 1 设置其字体颜色
fnt.bold = True 粗体
style.font = fnt 将赋值好的模式参数导入 Style
sheet.write_merge(1,1,1,1,'文本',style) 写入单元格

列宽与行高

语法 作用
sheet.col(2).width = 500 设置第 3 列列宽
tall_style = xlwt.easyxf('font:height 720;')<br>first_row = sheet.row(0) <br>first_row.set_style(tall_style) 设置行高与字体大小

设置所有单元格行高

tall_style = xlwt.easyxf('font:height 400;')
for i in range(65536):
    first_row = sheet.row(i)
    first_row.set_style(tall_style)

写入公式

语法 作用
xlwt_sheet.write(1,1xlwt.Formula('A1*B1')) 单元格写入公式

颜色参考

from xlwt import *

xlwt_book = Workbook()
xlwt_sheet = xlwt_book.add_sheet('sheet1')
style = XFStyle()

a = 0
for i in range(1000):
    pattern = Pattern()
    pattern.pattern = Pattern.SOLID_PATTERN
    pattern.pattern_fore_colour = i
    style.pattern = pattern
    xlwt_sheet.write(i, 1, None, style)

for i in range(1000):
    xlwt_sheet.write(i, 0, a, style)
    a += 1

xlwt_book.save('demo.xls')

xlrd

语法 返回值 作用
xlrd_book = xlrd.open_workbook(r'c:\test.xls')
xlrd_book.sheet_names() list 查看所有 sheet 名称
xlrd_sheet = xlrd_book.sheet_by_index(0) 通过索引获取 Sheet
xlrd_sheet = xlrd_book.sheets()[0] 通过索引获取 Sheet
xlrd_sheet = xlrd_book.sheet_by_name('sheet') 通过名称获取 Sheet
cell_11 = xlrd_sheet.cell_value(0,0) float | str 读取单元格数据
self.xlrd_sheet.cell(0, 1).value 可以读取空单元格
row = xlrd_sheet.row_values(3) list 读取第 2 行数据
cols = xlrd_sheet.col_values(3) list 读取第 2 列数据
[xlrd_sheet.cell(i,ord('B')-ord('A')).value for i in range(0,3)] list 读取 B 列的 1-3 行
xlrd_book.nrows int 获取有效行数
xlrd_book.ncols 获取有效列数

获取单元格的类型

语法 返回值
xlrd_sheet.cell(2,2).ctype 0 empty 空值
1 string 字符串
2 number 数字
3 date 日期
4 boolean 布尔
5 error 错误

xlutils

保存原始格式追加内容

语法 作用
xlrd_book = xlrd.open_workbook("C:\\demo.xls",formatting_info=True) 读取文件,并保留 Excel 的原格式
xlrd_sheet = xlrd_book.sheets()[0] 获取 sheet 工作表
row = xlrd_sheet.nrows 获取有效行数
xlwt_book = copy(xlrd_book) 将文件复制到内存,并改为写模式
xlwt_sheet = xlwt_book.get_sheet(0) 获取 sheet 工作表
xlwt_sheet.write(row + 1,2,'demo') 写入数据
xlwt_book.save("C:\demo.xls") 保存写入数据后的文件到源文件路径
import xlrd
from xlutils.copy import copy
xlrd_book = xlrd.open_workbook("C:\\demo.xls",formatting_info=True)
xlrd_sheet = xlrd_book.sheets()[0]
row = xlrd_sheet.nrows
xlwt_book = copy(xlrd_book)
xlwt_sheet = xlwt_book.get_sheet(0)
xlwt_sheet.write(row + 1,2,'demo')
xlwt_book.save("C:\\demo.xls")

pywin32

语法 作用
excel = win32com.client.Dispatch('Excel.Application') 获取 excel 对象
excel.Visible = -1 0 代表隐藏对象,但可以通过菜单再显示。<br> -1 代表显示对象。<br> 2 代表隐藏对象,但不可以通过菜单显示,只能通过 VBA 修改为显示状态。
win32_book = excel.Workbooks.Open("c:/demo.xls") 打开 excel
win32_sheet = win32_book.Worksheets("sheet1") sheet 页,可以使序号,也可以是名称。
win32_book.save 保存
win32_book.close 退出
LastRow = win32_sheet.usedrange.rows.count 获取当前 sheet 页有效行数
from win32com.client import Dispatch
import win32com.client

excel = win32com.client.Dispatch('Excel.Application')
excel.Visible = -1
win32_book = excel.Workbooks.Open(r'c:/demo.xls')
win32_sheet = win32_book.Worksheets('sheet1')
win32_book.save
win32_book.close

注意

1、一定要绝对路径

2、实时操作 Visible = -1

write

语法 作用
win32_sheet.Rows("2:500").delete 删除行 2-500 包括 2 和 500。
win32_sheet.Cells(2, 2).Value = "233" 写入单元格
win32_sheet.Cells(2, 2).Font.Color = -16776961 设置单元格字体颜色
win32_sheet.Cells(2, 2).Font.Bold = True 设置单元格字体为粗体
win32_sheet.Cells(2, 2).Font.Name = "微软雅黑" 设置单元格字体
win32_sheet.Range(win32_sheet.Cells(6, 1), win32_sheet.Cells(10, 10)).Value = 嵌套元组 给一个范围赋值,输入的值应该为嵌套的元组
win32_sheet.Range(win32_sheet.Cells(6, 1), win32_sheet.Cells(10, 10)).Font.Color = -11489280 改变一个范围的属性值
win32_sheet.Range(win32_sheet.Cells(11, 1), win32_sheet.Cells(11, 4)).Value = 元组 赋值一行
win32_sheet.Rows(12).Value = 元组 赋值一整行

read

语法 作用
aCellValue = win32_sheet.Cells(2, 3).Value 获取一个单元格的值
嵌套元组 = win32_sheet.Range(win32_sheet.Cells(1, 1), win32_sheet.Cells(5, 5)).Value 获取一个范围的值,类型为嵌套的元组

类别

语法 作用
win32_sheet.Cells(1, 2).NumberFormatLocal = 'h:mm:ss' 设置类别

框线

语法 作用
win32_sheet.Cells(4, 4).BorderAround(1,3) 框线,1 为框线样式 3 为框线粗细
win32_sheet.Range('B2').Borders(1).LineStyle = 7 框线,1 设置上下左右 7 为框线样式

居中

语法 作用
win32_sheet.Cells(5, 5).HorizontalAlignment = 3 水平居中
win32_sheet.Cells(6, 6).VerticalAlignment = 2 垂直居中

单元格背景色

语法 作用
win32_sheet.Cells(1, 2).Interior.ColorIndex = 28 单元格颜色

合并单元格

语法 作用
win32_sheet.Range(win32_sheet.Cells(1, 1), win32_sheet.Cells(3, 3)) .MergeCells = True 合并单元格

列宽

语法 作用
win32_sheet.Columns.AutoFit() 适应列宽
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!