原文链接:http://blog.163.com/yang_jianli/blog/static/16199000620138532243782/

使用COM接口,直接操作EXCEL(只能在Win上)。

优点:可以满足绝大数要求。缺点:有些麻烦。
文档也可以参看OFFICE自带的VBA EXCEL 帮助文件(VBAXL.CHM)。这里面讲述了EXCEL VBA的编程概念,不错的教程!另外,《Python Programming on Win32》书中也有很详细的介绍。这本书中给出了一个类来操作EXCEL 文件,可以很容易的加以扩展。

 #!/usr/bin/env python
 # -*- coding: utf-8 -*-
 from win32com.client import Dispatch
 import win32com.client
 class easyExcel:
       """A utility to make it easier to get at Excel.    Remembering
       to save the data is your problem, as is    error handling.
       Operates on one workbook at a time."""
       def __init__(self, filename=None):  #打开文件或者新建文件(如果不存在的话)
           self.xlApp = win32com.client.Dispatch('Excel.Application')
           if filename:
               self.filename = filename
               self.xlBook = self.xlApp.Workbooks.Open(filename)
           else:
               self.xlBook = self.xlApp.Workbooks.Add()
               self.filename = ''

       def save(self, newfilename=None):  #保存文件
           if newfilename:
               self.filename = newfilename
               self.xlBook.SaveAs(newfilename)
           else:
               self.xlBook.Save()
       def close(self):  #关闭文件
           self.xlBook.Close(SaveChanges=0)
           del self.xlApp
       def getCell(self, sheet, row, col):  #获取单元格的数据
           "Get value of one cell"
           sht = self.xlBook.Worksheets(sheet)
           return sht.Cells(row, col).Value
       def setCell(self, sheet, row, col, value):  #设置单元格的数据
           "set value of one cell"
           sht = self.xlBook.Worksheets(sheet)
           sht.Cells(row, col).Value = value
       def getRange(self, sheet, row1, col1, row2, col2):  #获得一块区域的数据,返回为一个二维元组
           "return a 2d array (i.e. tuple of tuples)"
           sht = self.xlBook.Worksheets(sheet)
           return sht.Range(sht.Cells(row1, col1), sht.Cells(row2, col2)).Value
       def addPicture(self, sheet, pictureName, Left, Top, Width, Height):  #插入图片
           "Insert a picture in sheet"
           sht = self.xlBook.Worksheets(sheet)
           sht.Shapes.AddPicture(pictureName, 1, 1, Left, Top, Width, Height)  

       def cpSheet(self, before):  #复制工作表
           "copy sheet"
           shts = self.xlBook.Worksheets
           shts(1).Copy(None,shts(1))
 #下面是一些测试代码
 if __name__ == "__main__":
       PNFILE = r'c:/screenshot.bmp'
       xls = easyExcel(r'D:/test.xls')
       xls.addPicture('Sheet1', PNFILE, 20,20,1000,1000)
       xls.cpSheet('Sheet1')
       xls.save()
       xls.close()  

[转载]python操作excel使用win32com的更多相关文章

  1. 转载:python操作excel表格(xlrd/xlwt)

    python操作excel表格(xlrd/xlwt)   最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而 ...

  2. Python操作excel(xlrd和xlwt)

    Python操作excel表格有很多支持的库,例如:xlrd.xlwt.openpyxl.win32com,下面介绍使用xlrd.xlwt和xlutils模块这三个库不需要其他的支持,在任何操作系统上 ...

  3. python操作excel表格(xlrd/xlwt)

    最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而且不太能满足需求,不过经过一番对源码的"研究&q ...

  4. Python操作Excel

    一.系统性学习 对于操作Excel,需要Xlrd/xlwt这两个模块,下面推荐出系统性学习的网址: python操作Excel读写--使用xlrd 官方文档 Python 使用 Xlrd/xlwt 操 ...

  5. Python操作excel表格

    用Python操作Excel在工作中还是挺常用的,因为毕竟不懂Excel是一个用户庞大的数据管理软件 注:本篇代码在Python3环境下运行 首先导入两个模块xlrd和xlwt,xlrd用来读取Exc ...

  6. Python 利用Python操作excel表格之openyxl介绍Part2

    利用Python操作excel表格之openyxl介绍 by:授客 QQ:1033553122 欢迎加入全国软件测试交流qq群(群号:7156436) ## 绘图 c = LineChart()    ...

  7. Python 利用Python操作excel表格之openyxl介绍Part1

    利用Python操作excel表格之openyxl介绍 by:授客 QQ:1033553122 欢迎加入全国软件测试交流qq群(群号:7156436),免费获取以下性能监控工具(类似Nmon精简版) ...

  8. 【转】python操作excel表格(xlrd/xlwt)

    [转]python操作excel表格(xlrd/xlwt) 最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异, ...

  9. Python 利用Python操作excel表格之xlwt介绍

    利用Python操作excel表格之xlwt介绍   by:授客 QQ:1033553122 直接上代码   案例1 #!/usr/bin/env python # -*- coding:utf-8 ...

随机推荐

  1. LEETCODE —— Unique Paths II [动态规划 Dynamic Programming]

    唯一路径问题II Unique Paths II Follow up for "Unique Paths": Now consider if some obstacles are ...

  2. 用JQuery动态为选中元素添加/删除类

    在做一些tab页功能时,我们经常会见到如下样式: 即当选中一个元素时,在此元素下会添加相应的类,以示区别.今天就研究了一下如何用JQuery实现此效果. 1. HTML代码 <a id=&quo ...

  3. windows server 2012 FTP SMB 文件夹权限继承

    被坑了..win默认的权限继承,有继承就没有smb目录继承,有smb目录继承 父级文件夹的权限就删不掉.. 换ftp轻松愉快...

  4. 使用 dynamic 标记解析JSON字符串 JDynamic :支持Json反序列化为Dynamic对象

    使用 dynamic 标记解析JSON字符串  http://www.cnblogs.com/taotaodetuer/p/4171327.html 1 string jsonStr = " ...

  5. Servlet,jsp,JSP技术 ,JSP编程

     一.Servlet 思考 1 浏览器可以直接打开JAVA/class文件吗? 不可以 2浏览器可以打开HTML.JS 文件吗? 可以 3 JAVA程序可以生成HTML文件吗?可以的,用IO流. 4 ...

  6. Fatal error 829---数据库 ID 8,页 (1:80740) 已标记为 RestorePending,可能表明磁盘已损坏(日志备份和热备、双机的重要性)

    问题现象: 在业务数据库中查询:SELECT a.NAME FROM SYSOBJECTS a WHERE a.NAME LIKE '%2015' AND a.XTYPE='u' 提示:消息 21,级 ...

  7. Java基础--serialVersionUID

    Java基础--serialVersionUID serialVersionUID作用: 序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性.有两种生成方式: 一个是默认的1L,比 ...

  8. not子查询中有null值的时候 not in 会失效

    not in子查询中有null值的时候 not in 会失效 但是 in 的子查询中有null的 不会失效

  9. 设置maven默认的JDK版本

    在pom文件中添加如下 : <build> <plugins> <plugin> <groupId>org.apache.maven.plugins&l ...

  10. emacs不能使用中文输入法

    参考 http://blog.csdn.net/nomasp/article/details/52138501 根据Fcitx的介绍:当LC_CTYPE为英文时,在Emacs上可能无法使用输入法. : ...