python用win32com处理excel表格

简介:

 今天一同事让处理一个excel,把一个excel里固定位置的内容读取写到另一个excel中的固定位置里,查了一些资料,python有好多处理excel的模块,对比之后感觉用win32com来处理这个问题比较简单,其中包含了处理文件路径和文件名字为中文的编码问题,下面是自己写的代码:

 
  1. #!/usr/bin/env python 
  2. # -*- coding: utf-8 -*- 
  3.  
  4. from win32com.client import constants,Dispatch 
  5. import os,sys,datetime,time,shutil 
  6.  
  7. class rw_excel: 
  8.  
  9.     def __init__(self): 
  10.         self.yesterday = (datetime.date.today() - datetime.timedelta(days=2)).strftime('%Y%m%d'
  11.         self.cwd = os.getcwd() 
  12.  
  13.     def read_excel(self): 
  14.         try
  15.             f = self.cwd + "\\" + self.yesterday + "\\" + u"汇总".encode("gbk") + "_" + self.yesterday + ".xlsx" 
  16.             print f 
  17.             f_open = (f) 
  18.             xlsApp = Dispatch("Excel.Application"
  19.             xlsApp.Visible = False 
  20.             xlsBook = xlsApp.Workbooks.Open(f_open) 
  21.             sheet_name = ('统计').decode("utf8"
  22.             xlsSht = xlsBook.Worksheets(sheet_name) 
  23.             R = [] 
  24.             open = [[2,2],[3,2],[4,2],[5,2],[6,2],[7,2],[8,2],[9,2],[10,2],[11,2],[12,2],[13,2],[14,2],[15,2]] 
  25.             for i in open: 
  26.                 a = xlsSht.Cells(i[0],i[1]).Value.encode("utf8"
  27.                 R.append(a) 
  28.             return R 
  29.         except Exception,e: 
  30.             print e 
  31.  
  32.     def write_excel(self,R): 
  33.         f = self.cwd + "\\" + self.yesterday + "\\" + u"数量汇总".encode("gbk") + "(GY)_" + self.yesterday + ".xls" 
  34.         print f 
  35.         f_save = (f) 
  36.         xlsApp = Dispatch("Excel.Application")    
  37.         xlsApp.Visible = False 
  38.         xlsBook = xlsApp.Workbooks.Open(f_save) 
  39.         sheet_name = ('数量汇总(GY)').decode("utf8"
  40.         xlsSht = xlsBook.Worksheets(sheet_name) 
  41.         save = [[2,5],[3,5],[6,5],[7,5],[9,5],[10,5],[12,5],[13,5],[14,5],[17,5],[18,5],[19,5],[20,5],[23,5]] 
  42.         for i in range(len(R)): 
  43.             xlsSht.Cells(save[i][0],save[i][1]).Value = R[i] 
  44.         xlsBook.Close(SaveChanges=1
  45.         xlsApp.Quit() 
  46.  
  47.     def main(self): 
  48.         R = self.read_excel() 
  49.         print "read_excel OK" 
  50.         self.write_excel(R) 
  51.         print "write_excel GY OK" 
  52.         print "Excel OK" 
  53.  
  54. class move: 
  55.  
  56.     def __init__(self): 
  57.         self.yesterday = (datetime.date.today() - datetime.timedelta(days=2)).strftime('%Y%m%d'
  58.         self.cwd = os.getcwd() 
  59.  
  60.     def copy(self,src, dst): 
  61.         if os.path.isdir(src): 
  62.             base = os.path.basename(src) 
  63.             if os.path.exists(dst): 
  64.                 dst = os.path.join(dst, base) 
  65.             if not os.path.exists(dst): 
  66.                 os.makedirs(dst) 
  67.             names = os.listdir(src) 
  68.             for name in names: 
  69.                 srcname = os.path.join(src, name) 
  70.                 self.copy(srcname, dst) 
  71.         else
  72.             shutil.copy2(src, dst) 
  73.  
  74.     def mk_dir(self): 
  75.         a = self.cwd + "\\" + u"处理名单_%s".encode("gbk") % self.yesterday + "\\" + u"处理名单(GY)_%s".encode("gbk") % self.yesterday 
  76.         print a 
  77.         if not os.path.isdir(a): 
  78.             os.makedirs(a) 
  79.         b = self.cwd + "\\" + u"处理名单_%s".encode("gbk") % self.yesterday + "\\" + u"处理名单(CS)_%s".encode("gbk") % self.yesterday 
  80.         print b 
  81.         if not os.path.isdir(b): 
  82.             os.makedirs(b) 
  83.         f = self.cwd + "\\" + self.yesterday + "\\" 
  84.         names = os.listdir(f) 
  85.         for name in names: 
  86.             if "txt" in name or "CS" in name: 
  87.                 self.copy(os.path.join(f,name),os.path.join(b,name)) 
  88.             else
  89.                 self.copy(os.path.join(f,name),os.path.join(a,name)) 
  90.         shutil.rmtree(f) 
  91.         print "Move ok" 
  92.  
  93.     def main(self): 
  94.         self.mk_dir() 
  95.  
  96. if __name__=="__main__"
  97.     boss = rw_excel() 
  98.     boss.main() 
  99.     boss = move() 
  100.     boss.main() 

以下是运行打印的结果:

 


本文转自 lover00751CTO博客,原文链接:http://blog.51cto.com/wangwei007/983488,如需转载请自行联系原作者

相关文章
|
12天前
|
SQL 人工智能 自然语言处理
Python 潮流周刊#52:Python 处理 Excel 的资源
探索Python精彩:文章涵盖正则、代码恢复、PEP新规范、轻量级打包、在线开发、动态生成GitHub README、自定义linting、代码转图片等。项目资源包括Excel处理、虚拟环境管理、Tensor谜题、依赖注入框架、Web应用转换、AI自动化测试、语法高亮、BI模型查询及Python监控库。在当前环境下,持续学习提升竞争力,Python Weekly提供丰富的学习资源,助力技术精进和职业发展。
|
20天前
|
Python
办公自动化-Python如何提取Word标题并保存到Excel中?
办公自动化-Python如何提取Word标题并保存到Excel中?
37 2
|
2天前
|
分布式计算 大数据 数据处理
MaxCompute操作报错合集之在本地用tunnel命令上传excel表格到mc遇到报错: tunnel upload C:\Users***\Desktop\a.xlsx mc里的非分区表名 -s false;该怎么办
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
8天前
|
SQL 存储 数据可视化
excel表格sql数据库
Excel表格和SQL数据库是两种不同的数据管理工具,它们各自有自己的特点和用途。下面我将分别介绍它们,并探讨它们之间的关系和互操作性。 一、Excel表格 Excel是微软公司推出的一款
分享:2秒快速查询40万手机号码归属地,批量手机号码归属地查询可以导出excel表格,WPS表格查询手机号码归属地怎么操作,批量手机号码归属地批量查询软件,批量号码查询按省份和城市分类,按运移动号码电信号码联通号码分类整理
本文介绍了如何批量快速查询手机号码归属地并进行分类。首先,通过提供的百度网盘或腾讯云盘链接下载免费查询软件。其次,开启软件,启用复制粘贴功能,直接粘贴号码列表并选择高速查询。软件能在极短时间内(如1.76秒内)完成40多万个号码的查询,结果包括归属地、运营商、邮箱和区号,且数据准确。之后,可直接导出数据至表格,若数据超过100万,可按省份、城市及运营商分类导出。文章还附带了操作动画演示,展示全程流畅的处理大量手机号码归属地查询的过程。
分享:2秒快速查询40万手机号码归属地,批量手机号码归属地查询可以导出excel表格,WPS表格查询手机号码归属地怎么操作,批量手机号码归属地批量查询软件,批量号码查询按省份和城市分类,按运移动号码电信号码联通号码分类整理
|
15天前
|
数据采集 数据挖掘 数据处理
Python数据分析实战:使用Pandas处理Excel文件
Python数据分析实战:使用Pandas处理Excel文件
93 0
|
17天前
|
文字识别
分享:如何ocr识别身份证复印件并导出至excel表格 ? 图片批量识别导出excel表格应用,图片批量识别转excel表格的方法
该软件是一款OCR身份证识别工具,能批量处理图片,自动提取身份证信息并导出为Excel。支持百度网盘和腾讯云盘下载。用户界面直观,操作简单,适合新手。识别过程包括:打开图片、一键识别、导出结果。特别注意,此程序仅适用于身份证识别,不适用于其他类型的图片识别。
分享:如何ocr识别身份证复印件并导出至excel表格 ? 图片批量识别导出excel表格应用,图片批量识别转excel表格的方法
|
24天前
|
数据采集 存储 数据挖掘
Python DataFrame初学者指南:轻松上手构建数据表格
【5月更文挑战第19天】本文是针对初学者的Pandas DataFrame指南,介绍如何安装Pandas、创建DataFrame(从字典或CSV文件)、查看数据(`head()`, `info()`, `describe()`)、选择与操作数据(列、行、缺失值处理、数据类型转换、排序、分组聚合)以及保存DataFrame到CSV文件。通过学习这些基础,你将能轻松开始数据科学之旅。
|
24天前
|
数据挖掘 数据处理 Python
【Python DataFrame 专栏】Python DataFrame 入门指南:从零开始构建数据表格
【5月更文挑战第19天】本文介绍了Python数据分析中的核心概念——DataFrame,通过导入`pandas`库创建并操作DataFrame。示例展示了如何构建数据字典并转换为DataFrame,以及进行数据选择、添加修改列、计算统计量、筛选和排序等操作。DataFrame适用于处理各种规模的表格数据,是数据分析的得力工具。掌握其基础和应用是数据分析之旅的重要起点。
【Python DataFrame 专栏】Python DataFrame 入门指南:从零开始构建数据表格
|
26天前
|
数据采集 数据挖掘 关系型数据库
Excel计算函数(计算机二级)(1),2024年最新2024Python架构面试指南
Excel计算函数(计算机二级)(1),2024年最新2024Python架构面试指南