0001.Excel文件新建读取修改保存

发布时间 2023-06-12 15:35:21作者: 興華

一、文件读取

python办公自动化,会用到xlrd库,所以需要先安装xlrd库。

import xlrd
wb=xlrd.open_workbook('招生表.xls')     # 读取工作簿
ws=wb.sheets()        #  文件sheets包含项,列表式的键值对
print(ws)
wsname=wb.sheet_names()      # 列表式工作簿下的所有工作表对象
print(wsname)
ws1=wb.sheet_by_name('中山分校')    # 按指定名称读取工作表对象-方法1
print(ws1)
ws2=wb.sheet_by_index(0)      # 按指定名称读取工作表对象-方法2
print(ws2)
ws3=wb.sheets()[0]      # 按指定名称读取工作表对象-方法3
print(ws3.name)

 

二、行列单元格读取

import  xlrd
ws=xlrd.open_workbook('招生表.xls').sheet_by_name('中山分校')    # 获取工作表对象
crow=ws.nrows     # 获取行号
print(crow)   
ccol=ws.ncols     # 获取列号
print(ccol)
row_data=ws.row_values(3)    # 获取指定行数据
print(row_data)
col_data=ws.col_values(1)    # 获取指定列数据
print(col_data)
cell_data_1=ws.cell_value(2,1)   # 获取单元格数据
print(cell_data_1)
cell_data_2=ws.cell(1,3).value   # 获取单元格书籍
print(cell_data_2)

数据共计:44行4列;其中第4行(起始为0,所以3即为第4行)数据信息;第2列(起始为0,所以1即为第2列)数据信息;第3行2列数据;第2列4行数据。
根据上述数据读取方式,在需要进行多单元格数据读取时,即可以采用行、列指定范围后嵌套遍历即可完成需求数据读取。

三、文件保存

同样的,读取办公文件用到了xlrd库,那么写入即保存需要用到xlwt库,所以首先需要安装xlwt库。

import xlwt
nwb=xlwt.Workbook(encoding='utf-8')    # 新建工作簿
nws=nwb.add_sheet('成绩表')      # 添加工作簿,命名为‘成绩表’
nws.write(1,2,'Hello!Excel我来了!')   # 写入单元格,向2行3列单元格写入数据
nwb.save('成绩单.xls')     # 保存工作薄

四、修改excel信息

同样的,修改信息同样也是有一个库方法,即xlutils库。

import xlrd
from xlutils.copy import copy
wb=xlrd.open_workbook('招生表.xls')
print(wb)
nwb=copy(wb)
print(nwb)
nws1=nwb.add_sheet('上海分校')      #  添加工作簿,命名为"上海分校"
nws2=nwb.get_sheet(1)             # 获取第2个工作簿
nws3=nwb.get_sheet('黄河分校')      # 获取"黄河分校"工作簿
nws3.write(5,7,'我来也')            # 在"黄河分校"的第6行8列单元格写入"我来也"
nws1.write(0,0,'上海上海')          # 在新建的"上海分校"工作簿的第1行1列单元格写入“上海上海
nwb.save('招生表.xls')

五、openpyxl库

1. Excel的新建、读取、保存

import openpyxl
wb=openpyxl.Workbook()       #  新建Excel
wb.save('我的工作簿.xlsx')       # 保存


import openpyxl
wb=openpyxl.load_workbook('我的工作簿.xlsx')   # 读取
wb.save('我的工作簿-1.xlsx')      # 保存


import openpyxl
for m in range(1,13):            # 循环新建Excel保存
    wb=openpyxl.Workbook()    
    wb.save('%d月.xlsx'%m)     # 保存

2. 工作表的获取方法

import openpyxl
wb=openpyxl.load_workbook('各年业绩表.xlsx')
ws1=wb.active#获取活动工作表
ws2=wb.worksheets[2]#以索引值方式获取工作表
ws3=wb['2012年']#以工作表名获取
# for sh in wb.worksheets:
#     print(sh)
# print(wb.sheetnames)
wb.worksheets[1].title='demo'    # 修改第2个sheet的工作簿名为“demo”
wb.save('各年业绩表-1.xlsx')

import openpyxl
wb=openpyxl.load_workbook('各年业绩表.xlsx')
for sh in wb.worksheets:
    sh.title=sh.title+'-芝华公司'
wb.save('各年业绩表(修改后).xlsx')

3. 工作表的新建、复制、删除

import openpyxl
wb=openpyxl.Workbook()
wb.create_sheet()      
wb.create_sheet()
wb.create_sheet()      # 共计创建了3个工作表
wb.save('demo1.xlsx')

wb=openpyxl.load_workbook('demo2.xlsx')
wb.create_sheet('工资表',2)
wb.save('demo2.xlsx')


wb=openpyxl.load_workbook('demo3.xlsx')
wb.copy_worksheet(wb['工资表']).title='工资表1月'    # copy工作表并命名为“工作表1月”
wb.save('demo3-1.xlsx')

import openpyxl
wb=openpyxl.load_workbook('demo3-1.xlsx')
wb.remove(wb['工资表'])    # 删除了“工资表”工作表
wb.save('demo3-1.xlsx')

load_woekbook(read_only=False, guess_types=False, data_only=False) 包含3个选择参数:

read_only:False表示可读、可写;True表示只读、不能写;

guess_types:False表示转换数据;True表示不能转换数据;

data_only:False表示序单元格的真实信息;True表示只读取值。