小白的第一个python办公自动化项目——自动生成文件索引表

文科小萌新,零基础自学python主要是为了办公自(tou)动(ge)化(lan)。
办公室电脑中有一个文件夹,里面全部都是发货箱单,格式为.xls,因发货量大,每周至少增加十几个箱单,有时候要查找或分类就比较麻烦。试过excel自带的文件夹目录功能,要导出目录还是挺方便的。但是因为箱单文件名中含有发货日期、发货唛头,我想要的效果是提取出发货日期,按日期倒序排列,提取出唛头,单独放一列。用vba应是可以实现的,但是正好在学python,所以想试一下。第一版做的有些麻烦,有3个部分组成,因办公电脑只有excel2003,所以只能导出.xls,用了xlrd和xlwt。后续用pandas再试一试,应该更简单。

第一部分:

#!/usr/bin/env python
# coding: utf-8

"""此程序用来提取指定文件夹下所有文件名、文件路径以及文件名中关键词,并分别输入excel表格中"""
import os, xlwt, re

book = xlwt.Workbook(encoding='utf8',style_compression=0)   # 初始化工作簿
sheet = book.add_sheet('sheet1')  # 新建工作表


path = "E:\箱单"  # 指定文件夹路径


def get_file(path):
    n = 0
    for root, dirs, files in os.walk(path):
 
        for file in files:
            n += 1

            # 把提取的日期写入第1列,若无日期,为空
            date = re.search(r'(\d{4}-?\d{1,2}-?\d{1,2})', file)
            if date is not None:
                sheet.write(n, 0, date.group())
            else:
                sheet.write(n, 0, " ")


            # 把文件名写入第2列
            sheet.write(n, 1, file)  
            
            # 把文件路径写入第3列
            file_path = os.path.join(root, file)
            sheet.write(n, 2, file_path)   

            # 把提取的唛头写入第4列,若无唛头,写入“无唛头信息”
            pattern = re.compile(r'(Q-[0-9a-zA-Z]+)')  
            result = re.findall(pattern, file)
            if result:
                sheet.write(n, 3, " ".join(i for i in result))
            else:
                sheet.write(n, 3, "无唛头信息")
                
            
get_file(path)
book.save(r'箱单索引表.xls')




第二部分:

#!/usr/bin/env python
# coding: utf-8

import xlwt
from xlrd import open_workbook


target_col = 0   #以第1列为索引排序

book = open_workbook(r'箱单索引表.xls',formatting_info=True)
sheet = book.sheets()[0]


data = [sheet.row_values(i) for i in range(sheet.nrows)]
label = data[0]
data = data[1:]
data.sort(key=lambda x: x[target_col],reverse=True)

bk = xlwt.Workbook()
st = bk.add_sheet("箱单索引表")


for idx_r, row in enumerate(data):
    for idx_c, value in enumerate(row):
        st.write(idx_r+1, idx_c, value)

bk.save(r'箱单索引表.xls')


第三部分:

#!/usr/bin/env python
# coding: utf-8

import xlwt
from xlrd import open_workbook


book = open_workbook(r'箱单索引表.xls', formatting_info=True)
sheet = book.sheets()[0]

my_book = xlwt.Workbook()
my_sheet = my_book.add_sheet("箱单索引表")
my_sheet.col(1).width = 256*55
my_sheet.col(2).width = 256*35
my_sheet.write(0, 0, "发货日期")
my_sheet.write(0, 1, "箱单链接")
my_sheet.write(0, 2, "唛头")


for rowx in range(1, sheet.nrows):
    date = sheet.cell_value(rowx, 0)
    my_sheet.write(rowx, 0, date)

    name = sheet.cell_value(rowx, 1)
    path = sheet.cell_value(rowx, 2)
    my_sheet.write(rowx, 1, xlwt.Formula('HYPERLINK("%s";"%s")'%(path,name)))

    mark = sheet.cell_value(rowx, 3)
    my_sheet.write(rowx, 2, mark)


my_book.save(r'C:\Users\61782_000\Desktop\箱单索引表.xls')

生成的箱单索引表效果:

箱单索引表

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值