from win32com.client import Dispatch

xlApp = Dispatch("Excel.Application") 
xlApp.Visible = 1

# Check if any workbook exists. 
if xlApp.Workbooks.Count == 0: 
    # If not, create a new one. 
    workbook = xlApp.Workbooks.Add() 
else: 
    # If yes, use the first one. 
    workbook = xlApp.Workbooks[0]

# Check if any sheet exists. 
if workbook.Sheets.Count == 0: 
    # If not, add a sheet to current workbook. 
    sheet = workbook.Sheets.Add() 
else: 
    # If yes, use the first sheet of current workbook. 
    sheet = workbook.Sheets[0] 
   
# Generate the multiplication table(9x9). 
for i in xrange(2, 10): 
    # Cells(<column>, <row>) 
    sheet.Cells(1, i).Value = i 
    sheet.Cells(1, i).Font.Color = 0xFF0000 
    sheet.Cells(i, 1).Value = i 
    sheet.Cells(i, 1).Font.Color = 0x00FF00 
   
def a2i(ch): 
    return ord(ch.upper()) - ord('A') + 1

def i2a(i): 
    return chr((i-1) + ord('A')) 
   
for i in xrange(2, 10): 
    for j in xrange(2, 10): 
        # Generate the Excel formula.      
        sheet.Cells(i, j).Formula = '=%s1*A%s' % (i2a(j), i) 
        sheet.Cells(i, j).Font.Color = 0x000000 
sheet.Name = "Multiplication Table" 
workbook.SaveAs('xxx.xls') 
xlApp.Quit()

上面代码可以正确运行。

了解更多参考下面内容: 
1)Excel hyperlink: 
xlsApp = win32com.client.Dispatch('Excel.Application') 
cell = xls.App.ActiveSheet.Cells(1,1) 
cell.Hyperlink.Add(cell,'http://xxx')

2)Excel row/column count: 
sht = xlsApp.ActiveSheet 
sht.Columns.Areas.Count 
sht.Rows.Areas.Count 
************************* 
[1]使用PyExcelerator读写EXCEL文件(Platform: Win,Unix-like) 
优点:简单易用        缺点:不可改变已存在的EXCEL文件。 
PyExcelerator是一个开源的MS Excel文件处理python包。它主要是用来写 Excel 文件.URL:    http://sourceforge.net/projects/pyexcelerator/

我没有找到关于PyExcelerator的文档。只是看到了limodou的一篇介绍。 
http://blog.donews.com/limodou/archive/2005/07/09/460033.aspx

这个包使用起来还是比较简单的:)。带了很多小例子,可以参照。

例mini.py. 
================================= 
#!/usr/bin/env python 
# -*- coding: windows-1251 -*- 
# Copyright (C) 2005 Kiseliov Roman 
__rev_id__ = """$Id: mini.py,v 1.3 2005/03/27 12:47:06 rvk Exp $"""

"导入模块 
from pyExcelerator import * 
"生成一个工作薄 
w = Workbook() 
"加入一个Sheet 
ws = w.add_sheet('Hey, Dude') 
"保存 
w.save('mini.xls') 
================================= 
[2]使用COM接口,直接操作EXCEL(只能在Win上) 
优点:可以满足绝大数要求。缺点:有些麻烦。:-) 
这方面的例子很多,GOOGLE 看吧:-). 文档也可以参看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 Word 编程 
http://doc.zoomquiet.org/data/20051227094903/ 
import win32com 
from win32com.client import Dispatch, constants

w = win32com.client.Dispatch('Word.Application') 
# 或者使用下面的方法,使用启动独立的进程: 
# w = win32com.client.DispatchEx('Word.Application')

# 后台运行,不显示,不警告 
w.Visible = 0 
w.DisplayAlerts = 0

# 打开新的文件 
doc = w.Documents.Open( FileName = filenamein ) 
# worddoc = w.Documents.Add() # 创建新的文档

# 插入文字 
myRange = doc.Range(0,0) 
myRange.InsertBefore('Hello from Python!')

# 使用样式 
wordSel = myRange.Select() 
wordSel.Style = constants.wdStyleHeading1

# 正文文字替换 
w.Selection.Find.ClearFormatting() 
w.Selection.Find.Replacement.ClearFormatting() 
w.Selection.Find.Execute(OldStr, False, False, False, False, False, True, 1, True, NewStr, 2)

# 页眉文字替换 
w.ActiveDocument.Sections[0].Headers[0].Range.Find.ClearFormatting() 
w.ActiveDocument.Sections[0].Headers[0].Range.Find.Replacement.ClearFormatting() 
w.ActiveDocument.Sections[0].Headers[0].Range.Find.Execute(OldStr, False, False, False, False, False, True, 1, False, NewStr, 2)

# 表格操作 
doc.Tables[0].Rows[0].Cells[0].Range.Text ='123123' 
worddoc.Tables[0].Rows.Add() # 增加一行

# 转换为html 
wc = win32com.client.constants 
w.ActiveDocument.WebOptions.RelyOnCSS = 1 
w.ActiveDocument.WebOptions.OptimizeForBrowser = 1 
w.ActiveDocument.WebOptions.BrowserLevel = 0 # constants.wdBrowserLevelV4 
w.ActiveDocument.WebOptions.OrganizeInFolder = 0 
w.ActiveDocument.WebOptions.UseLongFileNames = 1 
w.ActiveDocument.WebOptions.RelyOnVML = 0 
w.ActiveDocument.WebOptions.AllowPNG = 1 
w.ActiveDocument.SaveAs( FileName = filenameout, FileFormat = wc.wdFormatHTML )

# 打印 
doc.PrintOut()

# 关闭 
# doc.Close() 
w.Documents.Close(wc.wdDoNotSaveChanges) 
w.Quit()

=============== 
>>> import win32com.client 
#指定是应用程序是Excel.Application并得到cel.Application")对象 
>>> xlsApp=win32com.client.Dispatch("Excel.Application") 
#得到Workbooks 
>>> xlsBook=xlsApp.Workbooks.Open("c:\\test.xls") 
#得到名称为sheet1的Sheet对象 
>>> xlsSheet=xlsBook.Sheets("sheet1") 
#或者根据索引值获取Sheet对象 
xlsSheet=xlsBook.Sheets[0] 
#得到有数据的行,这里要注意UsedRange的使用,不使用它也可以但是你会得到所有的整个sheet的单元格了,不是我们需要的。 
#这里浪费了我很多时间,由于此前我并没写过类似宏的东东。 
>>> rs=xlsSheet.UsedRange.Rows 
#最后当然类似读数组那样把它读取出来,具体如何使用我想就看个人什么用途以及喜好了。这里只是打印出来看看 
>>> for r in rs: 
         print r #遍历输出每行 
>>> for r in rs: 
         for onecell in r: 
                print onecell 
                print '\n'#遍历输出每个单元格,以换行符结束一行

pywin32解析office文档的更多相关文章

  1. Android打开doc、xlsx、ppt等office文档解决方案

    妹子我写代码很辛苦/(ㄒoㄒ)/~~ ,转载请标明出处哦~http://blog.csdn.net/u011791526/article/details/73088768 1.Android端有什么控 ...

  2. 怎么在线预览.doc,.docx,.ofd,.pdf,.wps,.cad文件以及Office文档的在线解析方式。

    前言 Office文件在线预览是目前移动化办公的一种新趋势.Office在线预览指的是Office系列的文件在线查看而不依附域客户端的存在.在浏览器或者浏览器控件中可以预览查看Word.PDF.Exc ...

  3. Apache-Tika解析Word文档

    通常在使用爬虫时,爬取到网上的文章都是各式各样的格式处理起来比较麻烦,这里我们使用Apache-Tika来处理Word格式的文章,如下: package com.mengyao.tika.app; i ...

  4. POI使用:用poi接口不区分xls/xlsx格式解析Excel文档(41种日期格式解析方法,5种公式结果类型解析方法,3种常用数值类型精度控制办法)

    一.使用poi解析excel文档 注:全部采用poi接口进行解析,不需要区分xls.xlsx格式,不需要判断文档类型. poi中的日期格式判断仅支持欧美日期习惯,对国内的日期格式并不支持判断,怎么办? ...

  5. 在禅道中实现WORD等OFFICE文档转换为PDF进行在线浏览

    条件: 安装好禅道的服务器 能直接浏览PDF的浏览器(或通过 安装插件实现 ) 文档转换服务程序(建议部署在另一台服务器上)     实现 原理: 修改禅道的文件预览功能(OFFICE文档其使用的是下 ...

  6. Java实现office文档与pdf文档的在线预览功能

    最近项目有个需求要java实现office文档与pdf文档的在线预览功能,刚刚接到的时候就觉得有点难,以自己的水平难以在三四天做完.压力略大.后面查找百度资料.以及在同事与网友的帮助下,四天多把它做完 ...

  7. Office文档在线预览

    工具说明:通过传入文档的Web地址,即可进行Office文档的在线预览. 使用方式: 在http://office.qingshanboke.com地址后,通过url参数传入您想预览的文件路径. 如: ...

  8. 把office文档转换为html过程中的一些坑

    之前和我们项目的团队一起酝酿了一个项目,公司的业务文档技术文档比较多,但都比较分散,虽然通过FTP或其他方式聚合起来了,但感觉还是不够方便. 另外公司每次都来新员工,新员工都需要一些培训,比较耗时,比 ...

  9. 网络电视精灵~分析~~~~~~简单工厂模式,继承和多态,解析XML文档,视频项目

    小总结: 所用技术: 01.C/S架构,数据存储在XML文件中 02.简单工厂模式 03.继承和多态 04.解析XML文档技术 05.深入剖析内存中数据的走向 06.TreeView控件的使用 核心: ...

随机推荐

  1. 量化投资学习笔记34——《Python机器学习应用》课程笔记08

    岭回归 解决某些训练样本线性相关,导致回归结果不稳定的情况. 它是一种用于共线性数据分析的有偏估计回归方法.是一种改良的最小二乘估计法. 在sklearn中使用sklearn.linear_model ...

  2. SPA中前端路由基本原理与实现方式

    SPA 前端路由原理与实现方式 通常 SPA 中前端路由有2中实现方式,本文会简单快速总结这两种方法及其实现: 修改 url 中 Hash 利用 H5 中的 history Hash 我们都知道 ur ...

  3. 探索 Redux4.0 版本迭代 论基础谈展望(对比 React context)

    Redux 在几天前(2018.04.18)发布了新版本,6 commits 被合入 master.从诞生起,到如今 4.0 版本,Redux 保持了使用层面的平滑过渡.同时前不久, React 也从 ...

  4. Postgresql存放数组形式的数据

    Postgres 数据库允许把字段定义为可变长度的数组.数据类型既可以是内置类型,也可以是用户自定义的类型或枚举类型. 例如: 创建表 create table demo(name text,subj ...

  5. docker 学习路线

    docker 学习路线 参考资料 知乎 docker 的学习路线 Docker - 从入门到实践 Docker 核心技术与实现原理 Docker 入门 <Kubernetes in Action ...

  6. 【一统江湖的大前端(8)】matter.js 经典物理

    目录 [一统江湖的大前端(8)]matter.js 经典物理 一.经典力学回顾 二. 仿真的实现原理 2.1 基本动力学模拟 2.2 碰撞模拟 三. 物理引擎matter.js 3.1 <愤怒的 ...

  7. springcloud gateway整合sentinel

    1.引入依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spri ...

  8. Python线性优化基础讲解~

    目前,各组织正在利用数据科学和机器学习来解决各种业务问题.为了创造一个真正的业务影响,如何弥合数据科学管道和业务决策管道之间的差距显得尤为重要. 数据科学管道的结果往往是数据中的预测.模式和洞察(通常 ...

  9. 15 Spring Data JPA概述

    Spring Data JPA 概述 Spring Data JPA 是 Spring 基于 ORM 框架.JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据库的访问和 ...

  10. LCN解决分布式事务原理解析+项目实战(原创精华版)

    写在前面: 原创不易,如果觉得不错推荐一下,谢谢! 由于工作需要,公司的微服务项目需解决分布式事务的问题,且由我进行分布式事务框架搭建和整合工作. 那么借此机会好好的将解决分布式事务的内容进行整理一下 ...