python操作excel

新建excel

import xlwings as xw
app=xw.App(visible=True,add_book=False)
for dept in ("技术部","开发部","销售部"):
    workbook=app.books.add()
    workbook.save(f"./部门业绩-{dept}.xlsx")

新建excel


from pathlib import Path
import xlwings as xw
app=xw.App(visible=False,add_book=False)
src_folder=Path('C:\\Users\\Administrator\\PycharmProjects\\pythonProject5')
header=['订单号','产品名称','产品价格']
val=['128','风扇','38']
new_workbook=xw.Book()
new_worksheet=new_workbook.sheets.add('test')
new_worksheet['A1'].value=header
new_worksheet['A2'].value=val
new_worksheet.autofit()
new_workbook.save(src_folder/'新建文件夹.xlsx')
new_workbook.close()
app.quit()

打开excel文件

import xlwings as xw
app=xw.App(visible=True,add_book=False)
app.display_alerts=False
app.screen_updating=False
filepath=r'C:\Users\Administrator\PycharmProjects\pythonProject5\新建文件夹.xlsx'
wb=app.books.open(filepath)
wb.save()
wb.close()
app.quit()

写入excel

import xlwings as xw
app=xw.App(visible=True,add_book=False)
wb=app.books.add()

wb.sheets['sheet1'].range('A1').value='人生'
#wb.save(r'd:\test.xlsx')
wb.save(r'./text.xlsx')
wb.close()
app.quit()

修改excel文件

import xlwings as xw
app=xw.App(visible=True,add_book=False)
wb=app.books.open(r'C:\Users\Administrator\PycharmProjects\新建Excel\test.xlsx')
# wb就是新建的工作簿(workbook),下面则对wb的sheet1的A1单元格赋值
wb.sheets['sheet1'].range('A1').value='苦短'
wb.save()
wb.close()
app.quit()

引用工作簿、工作表和单元格

  1. 引用工作簿,注意工作簿应该首先被打开
    wb.=xw.books['工作簿的名字‘]
  2. 引用活动工作簿
    wb=xw.books.active
  3. 引用工作簿中的sheet
    sht=xw.books['工作簿的名字‘].sheets['sheet的名字']
    # 或者
    wb=xw.books['工作簿的名字']
    sht=wb.sheets[sheet的名字]
  4. 引用活动sheet
    sht=xw.sheets.active
  5. 引用A1单元格
    rng=xw.books['工作簿的名字‘].sheets['sheet的名字']
    # 或者
    sht=xw.books['工作簿的名字‘].sheets['sheet的名字']
    rng=sht.range('A1')
  6. 引用活动sheet上的单元格
    # 注意Range首字母大写
    rng=xw.Range('A1')
    其中需要注意的是单元格的完全引用路径是:
    # 第一个Excel程序的第一个工作薄的第一张sheet的第一个单元格
    xw.apps[0].books[0].sheets[0].range('A1')
    迅速引用单元格的方式是
    sht=xw.books['名字'].sheets['名字']
    # A1单元格
    rng=sht[’A1']
    # A1:B5单元格
    rng=sht['A1:B5']
    # 在第i+1行,第j+1列的单元格
    # B1单元格
    rng=sht[0,1]
    # A1:J10
    rng=sht[:10,:10]

PS: 对于单元格也可以用表示行列的tuple进行引用
# A1单元格的引用
xw.Range(1,1)
#A1:C3单元格的引用
xw.Range((1,1),(3,3))

储存数据

  1. 储存单个值
    # 注意".value“
    sht.range('A1').value=1
  2. 储存列表
    # 将列表[1,2,3]储存在A1:C1中
    sht.range('A1').value=[1,2,3]
    # 将列表[1,2,3]储存在A1:A3中
    sht.range('A1').options(transpose=True).value=[1,2,3]
    # 将2x2表格,即二维数组,储存在A1:B2中,如第一行1,2,第二行3,4
    sht.range('A1').options(expand='table')=[[1,2],[3,4]]

读取数据

  1. 读取单个值
    # 将A1的值,读取到a变量中
    a=sht.range('A1').value
  2. 将值读取到列表中
    #将A1到A2的值,读取到a列表中
    a=sht.range('A1:A2').value
    # 将第一行和第二行的数据按二维数组的方式读取
    a=sht.range('A1:B2').value

读取目录

import os

# 定义一个函数,函数名字为get_all_excel,需要传入一个目录
def get_all_excel(dir):
    file_list = []
    for root_dir, sub_dir, files in os.walk(r'' + dir):
        # 对文件列表中的每一个文件进行处理,如果文件名字是以‘xlxs’结尾就
        # 认定为是一个excel文件,当然这里还可以用其他手段判断,比如你的excel
        # 文件名中均包含‘res’,那么if条件可以改写为
        for file in files:
            # if file.endswith('.xlsx') and 'res' in file:
            if file.endswith('.xlsx'):
                # 此处因为要获取文件路径,比如要把D:/myExcel 和res.xlsx拼接为
                # D:/myExcel/res.xlsx,因此中间需要添加/。python提供了专门的
                # 方法
                file_name = os.path.join(root_dir, file)
                # 把拼接好的文件目录信息添加到列表中
                file_list.append(file_name)
    return file_list


# 获取上一级别目录中的指定文件
print(get_all_excel('.'))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

品尚公益团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值