Python_13-Office文件数据操作
目录:
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文件数据操作的更多相关文章
- NPOI在无Office环境下,对Office文件的操作
在做项目的时候,经常会遇到对 Office的操作,但有时候会没有Office环境,因此给大家介绍一个思路,在没有Office环境下,对Office的处理. NPOI,顾名思义,就是POI的.NET版本 ...
- XML文件数据操作
#region XML序列化文件和反序列化 /// <summary> /// 通用类的保存函数,可以将已经声明过可序列化的类以文件方式保存起来. /// 保存格式分为 XML明文式和 二 ...
- Qt的Model/View Framework解析(数据是从真正的“肉(raw)”里取得,Model提供肉,所以读写文件、操作数据库、网络通讯等一系列与数据打交道的工作就在model中做了)
最近在看Qt的Model/View Framework,在网上搜了搜,好像中文的除了几篇翻译没有什么有价值的文章.E文的除了Qt的官方介绍,其它文章也很少.看到一个老外在blog中写道Model/Vi ...
- python第二十九课——文件读写(读取数据操作)
演示读取数据操作:path=r'a.txt' 1.打开文件f1=open(path,'r') 2.读取数据content1=f1.read(3)print(content1) content1=f1. ...
- HDFS只支持文件append操作, 而依赖HDFS的HBase如何完成数据的增删改查
转:http://www.th7.cn/db/nosql/201510/135382.shtml 1. HDFS的文件append功能 早期版本的HDFS不支持任何的文件更新操作,一旦一个文件创建.写 ...
- RandomAccessFile(),读写文件数据的API,以及复制文件操作
package seday03;import java.io.File;import java.io.RandomAccessFile; import java.io.IOException; /** ...
- 计算机二级-C语言-程序设计题-190112记录-结构体的遍历和结构体的数据的交换处理,文件的操作。
//程序设计题:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数低的学生数据放在b所指的数组中,注意:分数最低的学生可能不止一个,函数返回 ...
- cv.Mat 与 .txt 文件数据的读写操作
1.按OpenCV格式实现的 .txt 文件读写 可以用 cvSave 和 cvLoad 实现,格式和 .xml/.yml 的差不多,不过如果专用与 OpenCV 的数据读写,还是用 .xml/.y ...
- SQL不同服务器数据库之间的数据操作整理(完整版)
---------------------------------------------------------------------------------- -- Author : htl25 ...
随机推荐
- Django之 路由系统
Django的路由系统 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个URL调用这 ...
- SpringMVC 过滤器Filter使用解析
SpringMVC框架是一个成熟的优秀java web开发框架,学习研究框架设计有助于我们更好的理解和掌握spring MVC,设计和写出更符合的结构和代码. 本节主要是研读SpringMVC框架中的 ...
- 使用PHP判断是否为微信、支付宝等移动设备访问代码
在开发过程中经常遇到根据不同的设备显示不同的数据或者在页面样式上做不同的布局,另外在做支付接口的时候也可能会判断当前是什么设备访问,例如判断如果是微信内置浏览器访问则只启用微信支付功能,如果是支付宝内 ...
- Oracle的闪回特性之恢复truncate删除表的数据
Oracle的闪回特性之恢复truncate删除表的数据 SQL> show parameter flashback NAME T ...
- C#检测应用程序重复启动----函数检测(可以在多用户登录情况下检测)
上文是在网上找的检测程序重复运行的类,但是感觉不是很好用,而且还使用了API,似乎完全没有必要,于是晚上自己写了一个函数,经过测试,在多用户下仍然可以检测到程序的多次运行.当然,如果程序改了名字还是可 ...
- mysql之 explain、optimizer_trace 执行计划
一.explain mysql> explain select host,user,plugin from user ;+----+-------------+-------+------+-- ...
- FPGA简单概述
中国FPGA市场及人才需求 如今毕业生的就业问题十分严峻,特别是计算机专业的毕业生.通过对FPGA目前发展情况的分析和市场岗位的调查,结合高职高专生在FPGA岗位的定位,制定相应的教学计划,使高职高专 ...
- 数据科学:Pandas 和 Series 的 describe() 方法
一.Pandas 和 Series 的 describe() 方法 1)功能 功能:对数据中每一列数进行统计分析:(以“列”为单位进行统计分析) 默认只先对“number”的列进行统计分析: 一列数据 ...
- 【转】用Jmeter进行接口压力测试的步骤
1.双击jmeter.bat 2.右键点击测试规划à添加àThreadsà线程组,此时在测试规划下边显露出来线程组选项.点击该选项,显露出来线程组界面.参变量线程数表达若干个烦请,参变量Ramp-Up ...
- 【转】Jmeter安装 for windows
总结: 一.Jmeter安装总结 1.配置Java环境变量时需要注意设置的路径需要和JDK安装的路径一样 2.配置Java环境变量时需要注意JDK的版本号 3.配置环境变量时多个变量以分号隔开,但是确 ...