目录:

1.1      安装win32com模块

1.2      Access数据库操作

1.2.1       建立db1.db数据库,设计一张表t_student_b

1.3      Excel文件操作

1.3.1       读取Excel

1.4      Word文件操作

1.4.1       示例1:打开,另存为

1.4.2       示例2:更多功能

 

 

 

1.1   安装win32com模块

 

下载地址:

http://sourceforge.net/projects/pywin32/

 

1.2   Access数据库操作

1.2.1   建立db1.db数据库,设计一张表t_student_b

 

示例

#Python操作Access数据库步骤之1、建立数据库连接

import win32com.client  

conn = win32com.client.Dispatch(r'ADODB.Connection')

print '111'

DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=d:\\python279\\db1.mdb;'  

conn.Open(DSN)

print '222'

#Python操作Access数据库步骤之2、打开一个记录集

rs = win32com.client.Dispatch(r'ADODB.Recordset')  

rs_name = 't_student_b'#表名  

rs.Open('[' + rs_name + ']', conn, 1, 3)

 

#Python操作Access数据库步骤之3、对记录集操作

rs.AddNew()  

rs.Fields.Item(1).Value = '102'

rs.Fields.Item(2).Value = 'Li Yong'

rs.Update()

 

sql_statement = "insert into t_student_b (studno, studname) values ('201101', 'LiLee')"

#sql_statement = 'select * from t_student_b order by studno';

print '333'

conn.Execute(sql_statement)  

print '444'

 

conn.Close() 

 

 

1.3   Excel文件操作

1.3.1   读取Excel

 

编写操作类

from win32com.client import constants, Dispatch

 

class EasyExcel:

 

    def __init__(self, filename=None):

        self.xlApp = Dispatch('Excel.Application')

        if filename:

            self.filename = filename

            self.xlBook = self.xlApp.Workbooks.Open(filename)

        else:

           print "please input the filename"

 

    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 getRange(self, sheet, row1, col1, row2, col2):

        "return a 2d array (i.e. tuple of tuples)"

        sht = self.xlApp.Worksheets(sheet)

        return sht.Range(sht.Cells(row1, col1), sht.Cells(row2, col2)).Value

 

示例:

#from easyExcel import EasyExcel

#from texcel import EasyExcel

 

excelProxy = EasyExcel("d:\\python279\\test.xls")

 

content=excelProxy.getRange("sheet1",1,1,2,2)

   

print content

 

1.4   Word文件操作

 

 

要使用Python控制MS Word,您需要先安装win32com套件,这个套件可以到 http://sourceforge.net/projects/pywin32/ 找到。您需要先import win32com模块才能进行Word的控制。

 

1.4.1   示例1:打开,另存为

from win32com.client import Dispatch, constants

from win32com.client.gencache import EnsureDispatch

 

EnsureDispatch('Word.Application') #makepy 导入Word类库,否则constants无法使用

 

msword = Dispatch('Word.Application')

msword.Visible = True #是否可见

msword.DisplayAlerts = 0

strDir='d:\\python279\\';

doc = msword.Documents.Open(FileName = strDir + r'test.doc') #打开已有文件

newdoc = msword.Documents.Add() #添加新文件

 

newdoc.SaveAs('new.doc') #另存为

 

1.4.2   示例2:更多功能

#Python 操作Word(Excel、PPT等通用)

 

import win32com

from win32com.client import Dispatch, constants

 

w = win32com.client.Dispatch('Word.Application')

# 或者使用下面的方法,使用启动独立的进程:

# w = win32com.client.DispatchEx('Word.Application')

 

# 后台运行,不显示,不警告

w.Visible = 1

w.DisplayAlerts = 0

filenamein = 'test.doc'

# 打开新的文件

#doc = w.Documents.Open( FileName = filenamein )

worddoc = w.Documents.Add() # 创建新的文档

 

# 插入文字

#myRange = doc.Range(0,0)

myRange = worddoc.Range(0,0)

myRange.InsertAfter('Hello from Python! 111\n')

w.Selection.TypeParagraph;   #换行

myRange.InsertAfter('Hello from Python! 222\n')

#wordSel = myRange.Select()

myRange = worddoc.Range(0,0)

w.Selection.Style = constants.wdStyleHeading1 #找不到Style

 

# 正文文字替换

OldStr = 'Hello'

NewStr = 'How are you'

 

#w.Selection.Find.ClearFormatting()

#w.Selection.Find.Replacement.ClearFormatting()

#w.Selection.Find.Execute(OldStr, False, False, False, False, False, True, 1, True, NewStr, 2)

 

# 页眉文字替换

print('page header:')

#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)

 

 

# 表格操作

print('table:')

#myRange = worddoc.Range(0,0)

#worddoc.Tables.Add(myRange, 5, 4)

 

w.Selection.TypeParagraph;   #换行

 

#w.Selection.TypeText = 'test';

#w.Content.InsertAfter.Text = 'test'

#w.Selection.TypeParagraph;

 

myRange = worddoc.Range(worddoc.Sentences.Last.End -1,worddoc.Sentences.Last.End -1)

#w.Selection.Style = '正文'

w.Selection.ClearFormatting()

myRange.InsertAfter('Hello from Python! 333\n')

myRange.InsertAfter('Hello from Python! 444\n')

myRange.InsertAfter('Hello from Python! 555\n')

 

myRange.InsertAfter('Hello from Python! 333\n')

myRange = worddoc.Range(worddoc.Sentences.Last.End -1,worddoc.Sentences.Last.End -1)

w.ActiveDocument.Tables.Add(myRange, 2, 5)

#w.ActiveDocument.Tables.Add(wmyRange, 2, 5)

'''

if w.Selection.Tables(1).Style <> "网格型":

    w.Selection.Tables(1).Style = "网格型"

    w.Selection.Tables(1).ApplyStyleHeadingRows = True

    w.Selection.Tables(1).ApplyStyleLastRow = True

    w.Selection.Tables(1).ApplyStyleFirstColumn = True

    w.Selection.Tables(1).ApplyStyleLastColumn = True

'''

   

#w.Selection.

#worddoc.Tables[0].Rows[0].Cells[0].Range.Text ='123123'

#worddoc.Tables[0].Rows.Add() # 增加一行

 

# 转换为html

print('html:')

filenameout = 'd:\\python279\\mytest.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 ) # right work

 

# 打印

#doc.PrintOut()

#worddoc.PrintOut()

# 关闭

#doc.Close()

#worddoc.Close()

#w.Documents.Close(wc.wdDoNotSaveChanges)

#w.Quit()

 

其他例子:

http://www.th7.cn/Program/Python/201409/277859.shtml

Python_13-Office文件数据操作的更多相关文章

  1. NPOI在无Office环境下,对Office文件的操作

    在做项目的时候,经常会遇到对 Office的操作,但有时候会没有Office环境,因此给大家介绍一个思路,在没有Office环境下,对Office的处理. NPOI,顾名思义,就是POI的.NET版本 ...

  2. XML文件数据操作

    #region XML序列化文件和反序列化 /// <summary> /// 通用类的保存函数,可以将已经声明过可序列化的类以文件方式保存起来. /// 保存格式分为 XML明文式和 二 ...

  3. Qt的Model/View Framework解析(数据是从真正的“肉(raw)”里取得,Model提供肉,所以读写文件、操作数据库、网络通讯等一系列与数据打交道的工作就在model中做了)

    最近在看Qt的Model/View Framework,在网上搜了搜,好像中文的除了几篇翻译没有什么有价值的文章.E文的除了Qt的官方介绍,其它文章也很少.看到一个老外在blog中写道Model/Vi ...

  4. python第二十九课——文件读写(读取数据操作)

    演示读取数据操作:path=r'a.txt' 1.打开文件f1=open(path,'r') 2.读取数据content1=f1.read(3)print(content1) content1=f1. ...

  5. HDFS只支持文件append操作, 而依赖HDFS的HBase如何完成数据的增删改查

    转:http://www.th7.cn/db/nosql/201510/135382.shtml 1. HDFS的文件append功能 早期版本的HDFS不支持任何的文件更新操作,一旦一个文件创建.写 ...

  6. RandomAccessFile(),读写文件数据的API,以及复制文件操作

    package seday03;import java.io.File;import java.io.RandomAccessFile; import java.io.IOException; /** ...

  7. 计算机二级-C语言-程序设计题-190112记录-结构体的遍历和结构体的数据的交换处理,文件的操作。

    //程序设计题:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数低的学生数据放在b所指的数组中,注意:分数最低的学生可能不止一个,函数返回 ...

  8. cv.Mat 与 .txt 文件数据的读写操作

    1.按OpenCV格式实现的 .txt 文件读写 可以用 cvSave 和 cvLoad 实现,格式和 .xml/.yml 的差不多,不过如果专用与 OpenCV 的数据读写,还是用  .xml/.y ...

  9. SQL不同服务器数据库之间的数据操作整理(完整版)

    ---------------------------------------------------------------------------------- -- Author : htl25 ...

随机推荐

  1. warning MSB8004: Output Directory does not end with a trailing slash.

    当在VC里编译时,发现这个警告,就是说设置的目录参数不是以反斜杠结束的目录名称,如下: 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V ...

  2. 【ACM非算法部分】scanf()函数

    scanf函数 格式说明符: %c    字符型 %d    十进制数 %i     读入十进制,八进制,十六进制数.输入的时候正常是十进制数,若输入0前缀的数将读入八进制,0x前缀读入16进制.若输 ...

  3. Robot Framework接口测试(2)--http请求之get

    本来打算把http发送请求的get和post方法都介绍一下的,结果发现篇幅有点长,文本编辑也变得混乱,所以这里先介绍一下get方法,下一次再post.其实这些方法大家可以看一下源码里面的介绍只需要在代 ...

  4. 转载关于Qsys的 指令总线 和 数据总线

    1.关于Qsys的 指令总线 和 数据总线 连接的问题(data_master和instruction_master)   关于数据和指令端口的连接的疑问,这是初用Qsys的童鞋们很困惑的问题,之前使 ...

  5. SQL Server: Top 10 Secrets of a SQL Server Expert

    转载自:http://technet.microsoft.com/en-us/magazine/gg299551.aspx Many companies have downsized their IT ...

  6. 两种方式创建Maven项目【方式二】

    1.不勾选Create a simple project,直接点击下一步 2.选择maven-archetype-webapp下一步 3.填写相关信息,点击下一步完成 4.此时会报一个jsp的错误.我 ...

  7. Linux C程序操作Mysql 调用PHP采集淘宝商品

    还是继续这个项目. 在上一篇Linux下利用Shell使PHP并发采集淘宝产品中,采用shell将对PHP的调用推到后台执行,模拟多线程. 此方法有一致命缺点,只能人工预判每个程序执行时间.如果判断时 ...

  8. Java 局部变量和成员变量(全局变量)

    局部变量 定义在类的方法内或者代码块内的变量 局部变量只在定义它的方法体内或者代码块内有效 局部变量在使用前,必须先初始化 全局变量(成员变量) 一个类中既不在方法体内,也不在程序块内定义的变量 类中 ...

  9. 不用jq的异步数据获取

    function LoadData(url, sign) {             var message = "";             if (sign == " ...

  10. Sqlite数据库中的事务

    public void testTrasaction() throws Exception{  PersonSQLiteOpenHelper helper = new PersonSQLiteOpen ...