原文链接: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. Linux makefile 教程 非常详细,且易懂

    最近在学习Linux下的C编程,买了一本叫<Linux环境下的C编程指南>读到makefile就越看越迷糊,可能是我的理解能不行. 于是google到了以下这篇文章.通俗易懂.然后把它贴出 ...

  2. 当窗体获得焦点时禁用max快捷键

    最近一段时间一直在MXS里用dotnet写界面...写的各种头晕眼花... 过程中遇到了 TextBox 控件输入时 与max快捷键冲突的问题. 解决办法是 用 MaxTextBox 控件替换,今天请 ...

  3. VS2013 统计代码量(使用正则表达式)

    年尾了,需要统计一下今年各个项目的工作量,统计一下各个项目的代码行数: 具体操作步骤如下: 1.选中解决方案,快捷键:Ctrl+Shift+F,打开搜索框,在查找内容中输入正则表达式:"b* ...

  4. .NET设计规范————命名规范

    NET设计规范:约定.惯用法与模式———命名规范 前言:          最近在看<.NET设计规范:约定.惯用法与模式>一书,主要还是讲.NET的设计规范,以前对这一块也不是特别在意, ...

  5. CAN总线通信:实现MIC-3680与F28335 CAN总线通信的设置

    博主原创: 实现MIC-3680与F28335 CAN总线通信的设置(MIC-3680CAN模块滤波使用单滤波模式): CAN2.0A协议: (使用11位标识符) <1>F28335发送, ...

  6. Deployment failure on Tomcat 6.x. Could not copy all resources to……

    http://blog.knowsky.com/194238.htm tomcat部署不成功 Deployment failure on Tomcat 6.x. Could not copy all ...

  7. 说说Web.Config与App.Config

    说到web.config和app.config大家都很熟悉,我们都叫他们配置文件,平时用的多,注意的少.两个有啥区别呢,很简单,一句话:如果是web程序,如webform项目类型和mvc项目类型就是w ...

  8. 个人JS零碎知识整理

    1."DOM2级事件"规范要求的事件流包括三个阶段:事件捕获阶段.处于目标阶段.事件冒泡阶段 2.isNaN()       数字.空串.空格 返回false 变量是数字时返回fa ...

  9. ThinkPHP3.2.3 跨域访问

    其他程序调用tp项目的action时需要进行跨域设置,在tp项目根目录下添加crossdomain.xml文件. 文件内容:  <?xml version="1.0"?> ...

  10. Tree:加载列表数据

    Tree控件,需要提供一个树形的JSON数据,才能正常显示. 通常,开发者在后台可以这样做: 1)从数据库查询出一个列表数据 2)在后台,将列表数据转换为树形数据 3)通过JSON方式返回 在前台页面 ...