原文链接: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. PHP比较操作符详解(转自hack58)

    php的比较操作符有==(等于)松散比较,===(完全等于)严格比较,这里面就会引入很多有意思的问题. 在松散比较的时候,php会将他们的类型统一,比如说字符到数字,非bool类型转换成bool类型, ...

  2. [llvm] Call the LLVM Jit from c program

    stackoverflow: http://stackoverflow.com/questions/1838304/call-the-llvm-jit-from-c-program Another t ...

  3. HTML的文本格式化

    文本格式化:<html> <body> <b>This text is bold</b> <br /> <strong>This ...

  4. JSTL中fmt标签详解

    一:JSTL格式化标签又称为I18N标签库,主要用来编写国际化的WEB应用,使用此功能可以对一个特定的语言请求做出合适的处理. 例如:中国内地用户将显示简体中文,台湾地区则显示繁体中文,使用I18N格 ...

  5. asp.net动态设置标题title 关键字keywords 描述descrtptions

    推荐的简单做法如下: protected void Page_Load(object sender, EventArgs e){//Page titlePage.Title = "This ...

  6. Nuke

    - Debugging python code IN nuke with Eclipse - Documents: http://www.thefoundry.co.uk/products/nuke- ...

  7. PHPCMS v9 超级安全防范教程!

    一.目录权限设置很重要:可以有效防范黑客上传木马文件.如果通过 chmod 644 * -R 的话,php文件就没有权限访问了.如果通过chmod 755 * -R 的话,php文件的权限就高了. 所 ...

  8. 启用vim-ruby的rails complete (macvim)

    macvim启用rails complete 用vim已经很久了, 一直用spf13也挺好的, 最近遇到要处理一个遗留项目, 数据库字段太多, 因此折腾了一下配置好vim的ruby-completio ...

  9. php 对url 操作类:url拼接、get获取页面、post获取页面(带传参)

    /* * @brief url封装类,将常用的url请求操作封装在一起 * */ class URL{ private $error; public function __construct(){ $ ...

  10. Windows 驱动程序工具包中的头文件

    MSDN原文:https://msdn.microsoft.com/zh-cn/library/windows/hardware/ff554695(v=vs.85).aspx Windows 驱动程序 ...