Centos系统下载大全 | Redhat系统下载大全 | Windows2012系统下载大全 | Windows2008系统下载大全| CMS教程 | 网站地图 51运维网-专注Linux/Unix系统安全运维!
当前位置:51运维网 > 编程 > Python > 正文

python用win32com处理excel表格

时间:2016-06-26 18:44 来源:网络整理 作者:linux系统 阅读:

python用win32com处理excel表格

时间:2013-08-07 00:24来源:51cto.com博客 作者:lover007 的BLOG 举报 点击:次

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

#!/usr/bin/env python # -*- coding: utf-8 -*- from win32com.client import constants,Dispatch import os,sys,datetime,time,shutil class rw_excel: def __init__(self): self.yesterday = (datetime.date.today() - datetime.timedelta(days=2)).strftime('%Y%m%d') self.cwd = os.getcwd() def read_excel(self): try: f = self.cwd + "\\" + self.yesterday + "\\" + u"汇总".encode("gbk") + "_" + self.yesterday + ".xlsx" print f f_open = (f) xlsApp = Dispatch("Excel.Application") xlsApp.Visible = False xlsBook = xlsApp.Workbooks.Open(f_open) sheet_name = ('统计').decode("utf8") xlsSht = xlsBook.Worksheets(sheet_name) R = [] 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]] for i in open: a = xlsSht.Cells(i[0],i[1]).Value.encode("utf8") R.append(a) return R except Exception,e: print e def write_excel(self,R): f = self.cwd + "\\" + self.yesterday + "\\" + u"数量汇总".encode("gbk") + "(GY)_" + self.yesterday + ".xls" print f f_save = (f) xlsApp = Dispatch("Excel.Application") xlsApp.Visible = False xlsBook = xlsApp.Workbooks.Open(f_save) sheet_name = ('数量汇总(GY)').decode("utf8") xlsSht = xlsBook.Worksheets(sheet_name) 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]] for i in range(len(R)): xlsSht.Cells(save[i][0],save[i][1]).Value = R[i] xlsBook.Close(SaveChanges=1) xlsApp.Quit() def main(self): R = self.read_excel() print "read_excel OK" self.write_excel(R) print "write_excel GY OK" print "Excel OK" class move: def __init__(self): self.yesterday = (datetime.date.today() - datetime.timedelta(days=2)).strftime('%Y%m%d') self.cwd = os.getcwd() def copy(self,src, dst): if os.path.isdir(src): base = os.path.basename(src) if os.path.exists(dst): dst = os.path.join(dst, base) if not os.path.exists(dst): os.makedirs(dst) names = os.listdir(src) for name in names: srcname = os.path.join(src, name) self.copy(srcname, dst) else: shutil.copy2(src, dst) def mk_dir(self): a = self.cwd + "\\" + u"处理名单_%s".encode("gbk") % self.yesterday + "\\" + u"处理名单(GY)_%s".encode("gbk") % self.yesterday print a if not os.path.isdir(a): os.makedirs(a) b = self.cwd + "\\" + u"处理名单_%s".encode("gbk") % self.yesterday + "\\" + u"处理名单(CS)_%s".encode("gbk") % self.yesterday print b if not os.path.isdir(b): os.makedirs(b) f = self.cwd + "\\" + self.yesterday + "\\" names = os.listdir(f) for name in names: if "txt" in name or "CS" in name: self.copy(os.path.join(f,name),os.path.join(b,name)) else: self.copy(os.path.join(f,name),os.path.join(a,name)) shutil.rmtree(f) print "Move ok" def main(self): self.mk_dir() if __name__=="__main__": boss = rw_excel() boss.main() boss = move() boss.main()

以下是运行打印的结果:

 

------分隔线----------------------------

  • 上一篇:python写的FTP简单上传下载文件
  • 下一篇:python取汉字的拼音的首个字母
  • 感谢您对【51运维网 http://www.51ou.com/】的支持,我们为您免费提供《python用win32com处理excel表格》技术文章,《python用win32com处理excel表格》详细使用和说明,有时《python用win32com处理excel表格》可能不完善、敬请谅解!如果《python用win32com处理excel表格》有错误请给我们留言,我们将尽快修复文章错误,如果您觉得本站不错,请分享给周围的朋友!谢谢!

    顶一下
    (0)
    0%
    踩一下
    (0)
    0%
    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    验证码:点击我更换图片