Python中使用openpyxl的增改查删基础

注意:openpyxl只支持Office Open XML标准的电子表格文件。也就是常见的文件中只支持xlsx不支持xls

一、创建电子表格文件及内容

# 导入openpyxl这个模块
import openpyxl

# 创建一个工作簿对象
wb = openpyxl.Workbook()

# 1.可以获取当前的活跃工作表,对这个工作表进行写入
# st = wb.active
# 2.也可以创建一个指定名称的工作表,同时还可以传入第二个参数指定创建位置(默认在最后)
st = wb.create_sheet("s_sheet2",0)
# 1.通过工作表坐标方式进行访问写入
st["A1"] = 1
st["B1"] = 2

wb.create_sheet("test_sheet")

# 2.通过cell()使用行列坐标进行访问写入
# 然后这儿我们写入一个公式,让我们打开表格后通过公式得到结果
st.cell(1,3).value = "=SUM(A1:B1)"

# 3.可以将可遍历体逐行写入sheet中
rows_l = [[99,100,"=SUM(A2:B2)"],[101,102,"=SUM(A3:B3)"]]
for _row_l in rows_l:
    st.append(_row_l)

save_path = "D:\\1.xlsx" 
wb.save(save_path)
wb.close()

二、访问修改电子表格文件

# 读取表格
save_path = "D:\\1.xlsx" 
# 读取一个电子表格文件
wb = openpyxl.load_workbook(save_path)

# 1.获取当前活跃工作表
# st = wb.active

# 2.还可以获取当前工作簿中的所有工作表名,然后根据下标去获取工作表名
# st = wb[wb.sheetnames[1]]

# 3.还可以获取当前工作簿中的所有工作表名,然后根据下标去获取工作表名
st = wb['s_sheet2']

# 1.以通过工作表坐标访问
# 在这儿要注意:写入时可以不写.value,但读取时不写这个就获取不到值
a1_v = st["A1"].value

# 2.通过cell()使用行列访问
b1_v = st.cell(1,2).value
c1_v = st.cell(1,3).value

print(a1_v,b1_v,c1_v)

# 3.使用范围运算符读取数据
# 注意这儿获取到的rows中是一个嵌套元组
# 内容:((单元格值1,单元格值2),(单元格值3,单元格值4))
# rows_t = st[st.dimensions] #st.dimensions获取到的的是最大内容范围
rows_t = st["A2":"C3"] 
for _row_t in rows_t:
    for _col in _row_t:
        print(_col.value,end="\t")
    print("")    
    

# 4.还可以通过iter_rows()按行迭代进行访问
# 因为此方法还有其他参数,建议通过命名参数进行使用,参数如下:
# min_row=None, max_row=None, min_col=None, max_col=None
for _row_t in st.iter_rows(min_row=2,max_row=3,min_col=1, max_col=2):
    for _cell in _row_t:
        print(_cell.value,end="\t")
    print("")

# 5.当然还可以通过iter_cols()按列迭代进行访问
# 因为这个方法没有其他参数,可以按顺序输入参数即可,参数如下:
# min_row=None, max_row=None, min_col=None, max_col=None
# 可以使用st.min_row,st.max_row,st.min_col,st.max_col获取内容的最大最小行列
for _col_t in st.iter_cols(st.min_row,st.max_row,st.min_col,st.max_col):
    for _cell in _col_t:
        print(_cell.value,end="\t")
    print("")

# 6.可以使用rows获取
# 注意这儿获取到的rows中是一个嵌套元组
# 内容:((单元格值1,单元格值2),(单元格值3,单元格值4))
for _row_t in st.rows:
    for _cell in _row_t:
        print(_cell.value,end="\t")
    print("")
    
# 7.可以使用columns获取
# 注意这儿获取到的colnums中是一个嵌套元组
# 内容:((单元格值1,单元格值2),(单元格值3,单元格值4))
for _clonum_t in st.columns:
    for _cell in _clonum_t:
        print(_cell.value,end="\t")
    print("")

# 最后我们还可以删除不需要的工作表
wb.remove(wb["test_sheet"])
# 因为进行了删除操作,所以需要保存一下
# 当然保存的路径可以换到其他位置(这就相当于是另存为了)
wb.save(save_path)
wb.close()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值