首页 > 其他分享 >win32com:excel筛选 复制

win32com:excel筛选 复制

时间:2023-12-15 17:15:12浏览次数:26  
标签:sheet tem excel source Range win32com file 筛选

import os.path
from win32com.client import Dispatch

excel = Dispatch("ket.Application")  # 启动wps excel 应用。Microsoft excel用Excel.Application
excel.Visible = True
end_file_basepath = r'C:\Users\meiya\Desktop\数据分省\地区'
source_basepath = r'C:\Users\meiya\Desktop\数据分省'
source_file_name = '构代码信息核对明细表.xls'
source_file = os.path.join(source_basepath,source_file_name)
wb = excel.Workbooks.Open(source_file)  # 打开excel文档

for sheet in wb.Worksheets:
    rows_max = sheet.usedRange.Rows.Count  # 获取已使用范围的最大行数
    rowA_Range = sheet.Range(f'A5:A{rows_max}').value
    rowA_set = set(rowA_Range)
    rowA = [r[0] for r in rowA_set ]

    for r in rowA:
        sheet.UsedRange.AutoFilter(Field=1, Criteria1=r, Operator=1)
        # 也可以写 sheet.Range('A1').AutoFilter(Field=1, Criteria1=r, Operator=1) 筛选时,range可以写a1,也可以写更大的范围

        for item in os.listdir(end_file_basepath):
            provience = item.split('.')[1]
            if r.find(provience) >= 0:
                tem_file = os.path.join(source_basepath,sheet.name)
                wb_tem = excel.Workbooks.Open(tem_file)  # 打开excel文档
                sheet_tem = wb_tem.Worksheets[0]
                row_mx = sheet_tem.UsedRange.Rows.Count+1
                if sheet.name == 'AA列开头为99(法人行)':
                    start = 4
                else:
                    start = 2
                sheet.Range(f'A{start}:V{sheet.UsedRange.Rows.Count}').SpecialCells(12).Copy(sheet_tem.Range(f'A{row_mx}'))
                sheet_tem.name = sheet.name

                provience_folder = os.path.join(end_file_basepath, item)
                provience_file = os.path.join(provience_folder,provience+'-'+sheet.name)
                wb_tem.SaveAs(provience_file)

wb.Save()
wb.Close()
excel.Quit()

筛选参考文章: Range单元格对象方法(二)AutoFilter自动筛选-腾讯云开发者社区-腾讯云 (tencent.com)

特殊单元格参考文章:Range单元格对象方法(三)Specialcells方法-腾讯云开发者社区-腾讯云 (tencent.com)

EXCEL 常见操作:常见 win32.com 操作_win32com-CSDN博客

 

标签:sheet,tem,excel,source,Range,win32com,file,筛选
From: https://www.cnblogs.com/zhangmeiyan/p/17903743.html

相关文章

  • excel搜索指定文字列
    excel搜索指定文字列'Input1:要搜索的目录'Input2:目标字符串Debug.Print[イミディエイトウィンドウ]里显示(またはCtrl+Gで表示させます)PrivateSubCommandButton1_Click()DimstrFolderAsStringDimstrFileAsStringDimwbAsWorkbookDimwsAsWorksheetDim......
  • pandas.read_excel默认读取第一行为列名 但是 pandas.DataFrame默认没有列名, 第一行
    pandas.read_excel默认读取第一行为列名headerint,listofint,default0Row(0-indexed)touseforthecolumnlabelsoftheparsedDataFrame.Ifalistofintegersispassedthoserowpositionswillbecombinedintoa MultiIndex.UseNoneifthereisnoheader.......
  • Go语言学习之-带分割符的文件转excel-PLUS版
    packagemainimport( "bufio" "errors" "flag" "fmt" "github.com/axgle/mahonia" "github.com/xuri/excelize/v2" "log" "os" "path" "path/filepath" ......
  • ExcelVba 单元格历史记录(记录单元格变更历史)
    PublicTrackChangesAsBooleanSubToggleCellHistory()TrackChanges=NotTrackChangesIfTrackChangesThenMsgBox"单元格历史记录功能已开启。"ElseMsgBox"单元格历史记录功能已关闭。"EndIfEndSubPrivateSubWorkbook_She......
  • Excel--图表类型设置
    1.直线图框选包括标题的表格数据-插入-图表区-(推荐的图表-所有图表-柱形图)-即可生成图表(1)点击生成图表中的数据列-右键鼠标-设置坐标轴格式(右侧会生成相应菜单栏)其功能有:选择坐标轴选项(最后那个子菜单)-可设置坐标轴的范围、修改主要单位及次要单位、修改刻度线(2)单击条形图的长......
  • Excel-设定格式化条件
    1.设定格式化选取想筛选的栏位所在列--功能区右上角“条件格式”--自行设定条件和突出显示样式栏位下方单元格新增突出显示的内容会自动填充显示样式2.更改/删除条件选取要更改的列--条件格式--管理规则--编辑规则--可重新指定条件删除条件--在管理规则內直接选取规则--点“—”......
  • 在 Excel 里研发俄罗斯方块;全国首例「AI 声音侵权案」审理丨 RTE 开发者日报 Vol.106
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表......
  • js excel操作
    Js操作Excel常用方法Js操作Excel常用方法1.创建一个新Excel表格    varXLObj=newActiveXObject("Excel.Application");    varxlBook=XLObj.Workbooks.Add;                         //新增工作簿    varExcelSheet=xlBook.Wo......
  • laravel php 50W数据导出excel 分批分页导出
    文章目录需求问题解决需求导出50W左右的数据导excel表问题使用phpexcel等插件,碰到数据量大很慢,可能能花半个小时以上数据量大查询慢内存不足执行超时解决使用原生csv导出设置脚本超时和内存,进行加大内存,不限制超时时间进行分页查询publicfunctionbp_out(R......
  • Excel 公式SWITCH函数你用过吗?多种查找函数介绍
    我们公司的项目上的模板使用了Excel的Switch函数,今天我使用的时候,发现报错,无法使用。环境说明我使用的是Windows10专业版,Office2016报错信息在Excel中的报错如下: 单元格的公式如下:=F8*_xlfn.SWITCH(H8,"高",1.5,"中",1,"低",0.5)*(100-I8)/100 查找问题从网上找了......