赞
踩
相关文章:
全网最详细超长python学习笔记、14章节知识点很全面十分详细,快速入门,只用看这一篇你就学会了!
【1】windows系统如何安装后缀是whl的python库
【2】超级详细Python-matplotlib画图,手把手教你画图!(线条颜色、大小、线形、标签)
【3】超级详细matplotlib使用教程,手把手教你画图!(多个图、刻度、标签、图例等)
1.操作xls格式的表格文件:
读取:xlrd
写入:xlwt
修改(追加写入):xlutils
2.操作xlsx格式的表格文件:
读取/写入:openpyxl
1. 导入读取库
import xlrd
2. 打开Excel文件读取数据
data = xlrd.open_workbook('xxx.xls')
3. 获取一个工作表
- table = data.sheets()[0] #通过索引顺序获取
- table = data.sheet_by_index(0) #通过索引顺序获取
- table = data.sheet_by_name(u'Sheet1')#通过名称获取
4. 获取整行和整列的值(数组)
- print (table.row_values(0))
- print (table.col_values(0))
5. 获取行数和列数
- nrows = table.nrows
- ncols = table.ncols
- print(nrows)
- print(ncols)
6. 循环行列表数据
- for i in range(nrows):
- print(table.row_values(i))
7. 单元格
- #单元格: 第几行,第几列
- cell_A1 = table.cell(0, 0).value
- cell_C4 = table.cell(3, 2).value
- print(cell_A1)
- print(cell_C4)
8. 使用行列索引
- #使用行列索引
- cell_A1 = table.row(0)[0].value
- cell_B2 = table.col(1)[0].value
- print(cell_A1)
- print(cell_B2)
- from openpyxl import Workbook
-
- wb = Workbook()
- # 创建一个工作簿
-
- ws1 = wb.active
- # 至少建立一个工作表
-
- ws = wb.create_sheet("mySheet", 0)
- ws1.title = "New Title"
- # 设置表的名字
-
- ws.sheet_properties.tabColor = "1072BA"
- # 改变表选项卡的颜色
-
- ws["A4"] = 4
- ws.cell(row=1, column=1, value=1)
- # 两种修改表格内容的方法, cell的方法暂时还弄不懂它第一个参数的意义。
-
- print(ws["A2"].value)
- # 访问A列2行的值,得到cell直接访问它的value属性,就是目标表格的值。
-
- wb.save("sample.xlsx")
- # 保存
- # coding=UTF-8
- import xlrd
- import xlwt
- from xlutils.copy import copy
-
-
- def write_excel_xls(path, sheet_name, value):
- index = len(value) # 获取需要写入数据的行数
- workbook = xlwt.Workbook() # 新建一个工作簿
- sheet = workbook.add_sheet(sheet_name) # 在工作簿中新建一个表格
- for i in range(0, index):
- for j in range(0, len(value[i])):
- sheet.write(i, j, value[i][j]) # 像表格中写入数据(对应的行和列)
- workbook.save(path) # 保存工作簿
- print("xls格式表格写入数据成功!")
-
-
- def write_excel_xls_append(path, value):
- index = len(value) # 获取需要写入数据的行数
- workbook = xlrd.open_workbook(path) # 打开工作簿
- sheets = workbook.sheet_names() # 获取工作簿中的所有表格
- worksheet = workbook.sheet_by_name(sheets[0]) # 获取工作簿中所有表格中的的第一个表格
- rows_old = worksheet.nrows # 获取表格中已存在的数据的行数
- new_workbook = copy(workbook) # 将xlrd对象拷贝转化为xlwt对象
- new_worksheet = new_workbook.get_sheet(0) # 获取转化后工作簿中的第一个表格
- for i in range(0, index):
- for j in range(0, len(value[i])):
- new_worksheet.write(i+rows_old, j, value[i][j]) # 追加写入数据,注意是从i+rows_old行开始写入
- new_workbook.save(path) # 保存工作簿
- print("xls格式表格【追加】写入数据成功!")
-
-
- def read_excel_xls(path):
- workbook = xlrd.open_workbook(path) # 打开工作簿
- sheets = workbook.sheet_names() # 获取工作簿中的所有表格
- worksheet = workbook.sheet_by_name(sheets[0]) # 获取工作簿中所有表格中的的第一个表格
- for i in range(0, worksheet.nrows):
- for j in range(0, worksheet.ncols):
- print(worksheet.cell_value(i, j), "\t", end="") # 逐行逐列读取数据
- print()
-
-
- book_name_xls = 'xls格式测试工作簿.xls'
-
- sheet_name_xls = 'xls格式测试表'
-
- value_title = [["姓名", "性别", "年龄", "城市", "职业"],]
-
- value1 = [["张三", "男", "19", "杭州", "研发工程师"],
- ["李四", "男", "22", "北京", "医生"],
- ["王五", "女", "33", "珠海", "出租车司机"],]
-
- value2 = [["Tom", "男", "21", "西安", "测试工程师"],
- ["Jones", "女", "34", "上海", "产品经理"],
- ["Cat", "女", "56", "上海", "教师"],]
-
-
- write_excel_xls(book_name_xls, sheet_name_xls, value_title)
- write_excel_xls_append(book_name_xls, value1)
- write_excel_xls_append(book_name_xls, value2)
- read_excel_xls(book_name_xls)
- # coding=UTF-8
- import openpyxl
-
-
- def write_excel_xlsx(path, sheet_name, value):
- index = len(value)
- workbook = openpyxl.Workbook()
- sheet = workbook.active
- sheet.title = sheet_name
- for i in range(0, index):
- for j in range(0, len(value[i])):
- sheet.cell(row=i+1, column=j+1, value=str(value[i][j]))
- workbook.save(path)
- print("xlsx格式表格写入数据成功!")
-
-
- def read_excel_xlsx(path, sheet_name):
- workbook = openpyxl.load_workbook(path)
- # sheet = wb.get_sheet_by_name(sheet_name)这种方式已经弃用,不建议使用
- sheet = workbook[sheet_name]
- for row in sheet.rows:
- for cell in row:
- print(cell.value, "\t", end="")
- print()
-
-
- book_name_xlsx = 'xlsx格式测试工作簿.xlsx'
-
- sheet_name_xlsx = 'xlsx格式测试表'
-
- value3 = [["姓名", "性别", "年龄", "城市", "职业"],
- ["111", "女", "66", "石家庄", "运维工程师"],
- ["222", "男", "55", "南京", "饭店老板"],
- ["333", "女", "27", "苏州", "保安"],]
-
-
- write_excel_xlsx(book_name_xlsx, sheet_name_xlsx, value3)
- read_excel_xlsx(book_name_xlsx, sheet_name_xlsx)
运行结果:
相关总结:
- import xlwt
-
- book = xlwt.Workbook() # 新建工作簿
- table = book.add_sheet('Over',cell_overwrite_ok=True) # 如果对同一单元格重复操作会发生overwrite Exception,cell_overwrite_ok为可覆盖
- sheet = book.add_sheet('Test') # 添加工作页
- sheet.write(1,1,'A') # 行,列,属性值 (1,1)为B2元素,从0开始计数
- style = xlwt.XFStyle() # 新建样式
- font = xlwt.Font() #新建字体
- font.name = 'Times New Roman'
- font.bold = True
- style.font = font # 将style的字体设置为font
- table.write(0,0,'Test',style)
- book.save(filename_or_stream='excel_test.xls') # 一定要保存
- import xlrd
- data = xlrd.open_workbook('excel_test.xls')
- print(data.sheet_names()) # 输出所有页的名称
- table = data.sheets()[0] # 获取第一页
- table = data.sheet_by_index(0) # 通过索引获得第一页
- table = data.sheet_by_name('Over') # 通过名称来获取指定页
- nrows = table.nrows # 为行数,整形
- ncolumns = table.ncols # 为列数,整形
- print(type(nrows))
- print(table.row_values(0))# 输出第一行值 为一个列表
- # 遍历输出所有行值
- for row in range(nrows):
- print(table.row_values(row))
- # 输出某一个单元格值
- print(table.cell(0,0).value)
- print(table.row(0)[0].value)
- import xlwt,xlrd
- from xlutils.copy import copy
- data = xlrd.open_workbook('excel_test.xls',formatting_info=True)
- excel = copy(wb=data) # 完成xlrd对象向xlwt对象转换
- excel_table = excel.get_sheet(0) # 获得要操作的页
- table = data.sheets()[0]
- nrows = table.nrows # 获得行数
- ncols = table.ncols # 获得列数
- values = ["E","X","C","E","L"] # 需要写入的值
- for value in values:
- excel_table.write(nrows,1,value) # 因为单元格从0开始算,所以row不需要加一
- nrows = nrows+1
- excel.save('excel_test.xls')
- import openpyxl
- data = openpyxl.Workbook() # 新建工作簿
- data.create_sheet('Sheet1') # 添加页
- #table = data.get_sheet_by_name('Sheet1') # 获得指定名称页
- table = data.active # 获得当前活跃的工作页,默认为第一个工作页
- table.cell(1,1,'Test') # 行,列,值 这里是从1开始计数的
- data.save('excel_test.xlsx') # 一定要保存
- import openpyxl
- data = openpyxl.load_workbook('excel_test.xlsx') # 读取xlsx文件
- table = data.get_sheet_by_name('Sheet') # 获得指定名称的页
- nrows = table.rows # 获得行数 类型为迭代器
- ncols = table.columns # 获得列数 类型为迭代器
- print(type(nrows))
- for row in nrows:
- print(row) # 包含了页名,cell,值
- line = [col.value for col in row] # 取值
- print(line)
- # 读取单元格
- print(table.cell(1,1).value)
- import openpyxl
- data = openpyxl.load_workbook('excel_test.xlsx')
- print(data.get_named_ranges()) # 输出工作页索引范围
- print(data.get_sheet_names()) # 输出所有工作页的名称
- # 取第一张表
- sheetnames = data.get_sheet_names()
- table = data.get_sheet_by_name(sheetnames[0])
- table = data.active
- print(table.title) # 输出表名
- nrows = table.max_row # 获得行数
- ncolumns = table.max_column # 获得行数
- values = ['E','X','C','E','L']
- for value in values:
- table.cell(nrows+1,1).value = value
- nrows = nrows + 1
- data.save('excel_test.xlsx')
- # !/usr/bin/python
- # coding:utf-8
- # xlsxwriter的基本用法
- import xlsxwriter
-
- # 1. 创建一个Excel文件
- workbook = xlsxwriter.Workbook('demo1.xlsx')
-
- # 2. 创建一个工作表sheet对象
- worksheet = workbook.add_worksheet()
-
- # 3. 设定第一列(A)宽度为20像素
- worksheet.set_column('A:A',20)
-
- # 4. 定义一个加粗的格式对象
- bold = workbook.add_format({'bold':True})
-
- # 5. 向单元格写入数据
- # 5.1 向A1单元格写入'Hello'
- worksheet.write('A1','Hello')
- # 5.2 向A2单元格写入'World'并使用bold加粗格式
- worksheet.write('A2','World',bold)
- # 5.3 向B2单元格写入中文并使用加粗格式
- worksheet.write('B2',u'中文字符',bold)
-
- # 5.4 用行列表示法(行列索引都从0开始)向第2行、第0列(即A3单元格)和第3行、第0列(即A4单元格)写入数字
- worksheet.write(2,0,10)
- worksheet.write(3,0,20)
-
- # 5.5 求A3、A4单元格的和并写入A5单元格,由此可见可以直接使用公式
- worksheet.write(4,0,'=SUM(A3:A4)')
-
- # 5.6 在B5单元格插入图片
- worksheet.insert_image('B5','./demo.png')
-
- # 5.7 关闭并保存文件
- workbook.close()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。