python操作Excel(xlrd和xlwt)

python操作Excel(xlrd和xlwt)

# 版本:Python 3.10.1
# 功能: python操作excel(主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。)
# 注意事项:1.Python2与Python3的文件路径格式不同;2.WPS与Office操作不同; 行列从“0”计数

import xlrd
import xlwt


# 绝对路径
Path_RD = "E:\\Python_Projects\\2-PythonExcel\\读Excel文件.xls"
# 相对路径
Path_WT = "2-PythonExcel\\写Excel文件.xls"

# 1 使用 python xlrd 读取Excel文件(支持格式:.xls .xlsx)
# 1.1. 打开Excel文件
Data_RD = xlrd.open_workbook(Path_RD)

# 1.2 作表操作
# 1.2.1 获取book(excel文件)中一个工作表
# 1.2.2 以下三个函数都会返回一个sheet.Sheet()对象工作表的名称
Table1_RD = Data_RD.sheets()[0]  # 通过索引顺序获取
Table2_RD = Data_RD.sheet_by_index(1)  # 通过索引顺序获取
Table3_RD = Data_RD.sheet_by_name("Sheet3")  # 通过名称获取
# 1.2.3 通过sheet.Sheet()对象,获取指定工作表的名字
Table_Name = Data_RD.sheet_names()[0]  # 通过索引顺序获取
print("Table_Name = ", Table_Name)
# 1.2.4 通过sheet.Sheet()对象,获取
Sheets_Names_List = Data_RD.sheet_names()  # 返回book中所有工作表的名字
print("Sheets_Names_List = ", Sheets_Names_List)
# 1.2.5 检查某个sheet是否导入完毕(True、False)
Result1 = Data_RD.sheet_loaded(1)
Result2 = Data_RD.sheet_loaded("Sheet2")
print("Result1 = ", Result1, "Result2 = ", Result2)

# 1.3 行的操作 row
# 1.3.1 获取Sheet中的行数. 注:这里table.nrows后面不带().
nrows = Table1_RD.nrows
print("nrows = ", nrows)
# 1.3.2 获取"行中所有的单元格"对象组成的列表
Rows_List1 = Table1_RD.row(0)
print("Rows_List1 = ", Rows_List1)
print("Rows_List1[0].value", Rows_List1[0].value)
for list_Text in Rows_List1:
    print("list_Text = ", list_Text)
Rows_List2 = Table1_RD.row_slice(1)
print("Rows_List2 = ", Rows_List2)
# 1.3.3 获取"行中所有的单元格"的数据组成的列表 ??
Rows_List3 = Table1_RD.row_types(3, start_colx=0, end_colx=None)
print("Rows_List3 = ", Rows_List3)
# 1.3.4 获取行的有效单元格长度,即这一行有多少个数据
Rows_Len1 = Table1_RD.row_len(1)
print("Rows_Len4 = ", Rows_Len1)

# 1.4 列的操作 col
# 1.4.1 获取列表中的有效列数
Table1_ncols = Table1_RD.ncols
print("Table1_ncols = ", Table1_ncols)
# 1.4.2 获取列中所有对象
# 1.4.2.1 获取该列中所有的单元格对象组成的列表
Col_List1 = Table1_RD.col(0, start_rowx=0, end_rowx=None)
print("Col_List1 = ", Col_List1)
# 1.4.2.2 获取该列中所有的单元格对象组成的列表
Col_List2 = Table1_RD.col_slice(1, start_rowx=0, end_rowx=None)
print("Col_List2 = ", Col_List2)
# 1.4.2.4 获取该列中所有单元格的数据类型组成的列表 ??
Col_List3 = Table1_RD.col_types(2, start_rowx=0, end_rowx=None)
print("Col_List3 =", Col_List3)
# 1.4.2.5 获取该列中所有单元格的数据组成的列表
Col_List4 = Table1_RD.col_values(3, start_rowx=0, end_rowx=None)
print("Col_List4 = ", Col_List4)

# 1.5 单元格的操作
# 1.5.1 获取对应位置单元格对象
Cell1 = Table1_RD.cell(2, 2)
print("Cell1 = ", Cell1)
# 1.5.2 获取对应位置单元格的数据类型
Cell1_Type = Table1_RD.cell_type(2, 2)
print("Cell_Type = ", Cell1_Type)
# 1.5.3  获取对应位置单元格的数据
Cell1_Value = Table1_RD.cell_value(2, 2)
print("Cell_Value = ", Cell1_Value)


# 1.6 实例
# 1.6.1 打开Excel文件
xlsx1 = xlrd.open_workbook("2-PythonExcel\\读Excel文件.xls")
# 1.6.2 获取工作表 sheet
# 通过sheet名查找:xlsx.sheet_by_name("sheet1")
# 通过索引查找:xlsx.sheet_by_index(3)
table1 = xlsx1.sheet_by_index(0)
# 1.6.3 获取单元格的值 cell
# 获取单个表格值 (2,1)表示获取第3行第2列单元格的值
value1 = table1.cell_value(2, 1)
print("第3行2列值为", value1)

# 1.6.4 获取表格总行数
nrows1 = table1.nrows
print("表格一共有", nrows1, "行")

# 1.6.5 获取第3列,从第1行开始的所有值(list)
# 注:行列的索引值从0开始,即表格中第1个单元格坐标为(0,0)
# name_list1 = [str(table1.cell_value(i, 2)) for i in range(1, nrows)]
name_list1 = table1.col_values(2, start_rowx=1, end_rowx=None)
print("第4列所有的值:", name_list1)

# 2 使用 python xlwt 写入Excel文件 (支持格式:.xls)
# 2.1 创建新的workbook(即新的Excel)
new_workbook = xlwt.Workbook(encoding="ascii")
# 2.2 创建新的sheet表
new_sheet = new_workbook.add_sheet("new_sheet")
# 2.3 设置样式
# 2.3.1 初始化样式
style1 = xlwt.XFStyle()
# 2.3.2 为样式创建字体格式
font = xlwt.Font()
font.name = "New Roman"  # 字体
font.bold = True  # 加粗
font.underline = True  # 下划线
font.italic = True  # 斜体
# 2.3.3 设置样式
style1.font = font
# 2.3.4 设置列宽(256为衡量单位,20表示20个字符宽度)
new_sheet.col(0).width = 256 * 20
# 2.3.5 设置行高
style2 = xlwt.easyxf("font:height 360;")  # 18pt,类型小初的字号
row = new_sheet.row(0)
row.set_style(style2)
# 2.3.6 合并行列(合并第2-3行,第0-3列)
new_sheet.write_merge(2, 3, 0, 3, "备注:Python操作Excel")
# 2.3.7 设置边框样式
borders = xlwt.Borders()  # 创建borders(边框样式)
# May be:   NO_LINE, THIN, MEDIUM, DASHED, DOTTED, THICK, DOUBLE, HAIR,
#           MEDIUM_DASHED, THIN_DASH_DOTTED, MEDIUM_DASH_DOTTED, THIN_DASH_DOT_DOTTED,
#           MEDIUM_DASH_DOT_DOTTED, SLANTED_MEDIUM_DASH_DOTTED, or 0x00 through 0x0D.
# DASHED虚线
# NO_LINE没有
# THIN实线
borders.left = xlwt.Borders.THIN
borders.right = xlwt.Borders.THIN
borders.top = xlwt.Borders.THIN
borders.bottom = xlwt.Borders.THIN
borders.left_colour = 0x40
borders.right_colour = 0x40
borders.top_colour = 0x40
borders.bottom_colour = 0x40
style3 = xlwt.XFStyle()
style3.borders = borders
# 2.3.8 设置单元格背景色
pattern = xlwt.Pattern()
# May be: NO_PATTERN, SOLID_PATTERN, or 0x00 through 0x12
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
# May be: 8 through 63. 0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow,
# 6 = Magenta, 7 = Cyan, 16 = Maroon, 17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow ,
# almost brown), 20 = Dark Magenta, 21 = Teal, 22 = Light Gray, 23 = Dark Gray, the list goes on...
pattern.pattern_fore_colour = 2
style4 = xlwt.XFStyle()
style4.pattern = pattern
# 2.3.9 设置单元格对齐
style5 = xlwt.XFStyle()
alignment = xlwt.Alignment()
# VERT_TOP = 0x00       上端对齐
# VERT_CENTER = 0x01    居中对齐(垂直方向上)
# VERT_BOTTOM = 0x02    低端对齐
# HORZ_LEFT = 0x01      左端对齐
# HORZ_CENTER = 0x02    居中对齐(水平方向上)
# HORZ_RIGHT = 0x03     右端对齐
alignment.horz = 0x02  # 设置水平居中
alignment.vert = 0x01  # 设置垂直居中
style5.alignment = alignment
# 2.4 写入表格内容
new_sheet.write(0, 0, "编号", style1)
new_sheet.write(1, 0, "001", style2)
new_sheet.write(4, 0, "Test1", style3)
new_sheet.write(4, 1, "Test2", style4)
new_sheet.write(4, 2, "Test3", style5)
# 2.5 保存文件
new_workbook.save("new_workbook_1.xls")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值