Python
操作
Word
、
EXCEL,ACCESS
2008
-
05
-
26 10:50
Python
操作
W潲d
、
EXCELⱁCCE卓
㈰〷
-
〴
-
〳‱㘺㌵
pyt桯渠䕸捥h
编程
ㄩ䕸捥E 灥pli湫n
硬獁灰s=⁷i渳㉣潭.i敮e⹄i獰st捨c'䕸捥E⹁灰pi捡ci潮o)
捥cl‽⁸ 献s灰pA捴iv敓桥整⹃敬l猨ㄬㄩ
捥cl⹈y灥pli湫⹁摤d捥cl,'桴tp://硸x')
㈩E
硣敬潷/捯c畭渠捯畮n:
獨s‽⁸ 獁灰pA捴iv敓桥整
獨s⹃潬畭湳⹁牥慳.C潵湴
獨s⹒潷献Ar敡e⹃潵湴
⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪*
[
1
]使用
Py䕸捥E敲慴潲
读写
EXC䕌
文件
(Pl慴f潲m: Wi測n湩x
-
li步k
优点:简单易用
缺点:不可改变已存在的
EXC䕌
文件。
Py䕸捥E敲慴潲
是一个开源的
䵓M E硣敬
文件处理
pyt桯h
包。它主要是用来写
E
硣敬
文
件
⹕RL:
桴t瀺//獯畲捥c潲g攮湥e/灲潪散e猯py數捥e敲慴潲/
我没有找到关于
Py䕸捥E敲慴潲
的文档。只是看到了
lim潤潵
的一篇介绍。
桴t瀺//扬潧潮敷献s潭/limo摯甯慲捨cv支㈰〵2〷0〹0㐶4〳㌮慳灸
这个包使用起来还是比较简单的:)。带了很多小例子,可以参照。
例
mi湩y.
=================================
⌡/畳u/扩n
/敮e⁰yt桯h
⌠
-
*
-
捯摩湧n⁷i湤潷s
-
ㄲ㔱1
-
*
-
⌠#潰ori杨g
C)′〰㔠 i獥li潶⁒潭慮
彟_敶彩摟张d•""$I携 mi湩y,v‱⸳′〰㔯〳02㜠ㄲ7㐷4〶 rv欠䕸瀠␢""
"
导入模块
fr潭⁰y䕸捥E敲慴潲m灯pt *
"
生成一个工作薄
w‽ W潲止潯欨)
"
加入一个
卨敥S
w猠㴠s摤彳h敥e('HeyⰠ,畤e')
"
保存
w.v
攨'mi湩.s')
=================================
[㉝
使用
COM
接口,直接操作
䕘C䕌(
只能在
Win
上
)
优点:可以满足绝大数要求。缺点:有些麻烦。
:
-
)
这方面的例子很多,
GOOGL䔠
看吧
:
-
)⸠
文档也可以参看
OFFICE
自带的
VBA EXC䕌
帮助
文件
(VBAXL.CHM)
。这里面讲述了
EXCEL VBA
的编程概念,
不错的教程!另外,《
Python Programming on Win32
》书中也有很详细的介绍。这本书中给
出了一个类来操作
EXCE
L
文件,可以很容易的加以扩展。
#!/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 = new
filename
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):
"Ge
t 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.Ce
lls(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.addPictu
re('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.V
isible = 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 = c
onstants.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].Header
s[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.BrowserLe
vel = 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 = fi
lenameout, FileFormat = wc.wdFormatHTML )
#
打印
doc.PrintOut()
#
关闭
# doc.Close()
w.Documents.Close(wc.wdDoNotSaveChanges)
w.Quit()
**************************************************
python ACCESS
编程
http://xinyu.blogbus.com/s46076/
因为使用的第三方组件用到
python
,
所以需要了解
python
的数据库操作。
后来找到了方法,写了如下的
sample
:
import win32com.client
def db1():
print "Start db1."
try:
conn = win32com.client.Dispatch(r'ADODB.Connection')
conn.Open('Provider=SQLOLEDB.1;Password=123456;Persist Security
Info=True;User ID=sa;Initial Catalog=ECI
-
SERVICE;Data Source=10.240.4.135')
rs = win32com.client.Dispatch(r'ADODB.Recordset')
rs.Cursorlocation=3
rs.Open('select * from EBP_B_AS_ALERT',conn)
rs.MoveFirst()
for x in range(rs.RecordCount):
if rs.EOF:
print "End of records"
break
else:
print rs.Fields.Item(1).Value
rs.MoveNext()
rs.Close()
conn.Close()
except:
print "Except, now."
用的是
win32com
的
extension
。
Python2.2.3
自身不带
win32 extension
,需要安装
win32all
-
162(win extensions).exe
。
代码比较简单,可惜没有找到
api
,所以提供哪些方法只能在网上
不行的吧
O渠㌯2㠯〷Ⱐ0i⁃桵湨畩
㱬
⸮.
䁤档潭渾⁷r潴攺
㸠
大家好,想问一下,怎样用
灹t桯h
读
wi湤潷猠
下的
w潲d
文档?
> 彟彟_彟彟彟彟彟彟彟彟彟彟彟彟彟彟彟_
_彟彟_彟张
>⁰ t桯h
-
捨c湥n攠
> P潳o: 湤⁰ t桯h
-
捨cn
⸮.
䁬i獴献syt桯渮据h
>⁓ 扳bri扥b 湤n扳bri扥⁴漠o
yt桯h
-
捨c湥ne
-
r敱e
⸮.
䁬i獴献syt桯渮据h
> Unsubscribe: send unsubscribe to
python
-
chinese
-
requ
...
@lists.python.cn
> Detail Info:
http:/
/python.cn/mailman/listinfo/python
-
chinese
--
注意身体,身体是革命的本钱!!
_______________________________________________
python
-
chinese
Post: send python
-
chin
...
@lists.python.cn
Subscribe: send subscribe to python
-
chinese
-
requ
...
@lists.python.cn
Unsubscribe: send unsubscribe to
python
-
chinese
-
requ
...
@lists.python.cn
D
etail Info:
http://python.cn/mailman/listinfo/python
-
chinese
http://blog.czug.org/panjy/python
-
word
import win32com
from win32com.client import Dispatch, constants
w = win32com.client.Dispatch('Word.Application')
#
或者使用下面的方法,使用启动独立的进程
㼠
⌠#‽⁷i渳㉣潭.i敮e⹄i獰s
t捨䕸⠧W潲搮d灰pi捡ci潮o)
⌠
后台运行,不显示,不警告
w⹖i獩扬攠e‰
w⹄i獰sayAl敲t猠㴠〠
⌠
打开新的文件
摯挠d⁷⹄潣畭敮e献佰敮⠠sil敎慭攠eil敮慭敩渠n
⌠#潲摤潣d=⁷⹄潣畭敮e献䅤搨s‣
创建新的文档
⌠
插入文字
myR慮来‽潣aR慮来g〬〩
myR慮来⹉湳nrtB敦潲攨'H敬l漠or潭⁐yt桯渡')
⌠
使用样式
w潲摓敬‽yR慮来⹓敬散e()
w潲摓敬⹓tyl攠e潮 t慮a献s摓tyl效敡摩湧ㄠ
⌠
正文文字替换
w⹓敬散ei潮oFi湤⹃l敡eF潲m慴ti湧n)
w⹓敬散ei潮oFi湤⹒数e慣敭敮e⹃l敡eF潲m慴ti湧n)
w⹓敬散ei潮oFi湤⹅硥捵n攨Ol摓trⰠF慬獥ⰠF慬獥ⰠF慬獥ⰠFals攬⁆慬獥ⰠTr略Ⱐㄬu
Tr略u
N敷StrⰠ㈩
⌠
页眉文字替换
w⹁捴iv敄潣畭敮e⹓散.i潮獛そ⹈敡e敲獛そ⹒a湧攮ni湤⹃l敡eF潲m慴ti湧n)
w⹁捴iv敄潣畭敮e⹓散.i潮獛そ⹈敡e敲獛そ⹒a湧攮ni湤⹒数e慣敭敮e⸠
Cl敡eF潲m慴ti湧n)
w⹁捴iv敄潣畭敮e⹓散.i潮獛そ⹈敡e敲獛そ⹒a湧攮ni湤⹅硥捵n攨Ol摓trⰠ,慬獥Ⱐ
F慬s
攬eF慬獥ⰠFal獥ⰠF慬獥ⰠTr略Ⱐㄬ⁆慬獥Ⱐ,敷StrⰠ㈩
⌠
表格操作
doc.Tables[0].Rows[0].Cells[0].Range.Text ='123123'
worddoc.Tables[0].Rows.Add() #
增加一
?/span>
#
转换为
html
wc = win32com.client.constants
w.ActiveDocument.WebOptions.RelyOnCSS = 1
w.ActiveDocum
ent.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()
Enter the password to open this PDF file:
File name:
-
File size:
-
Title:
-
Author:
-
Subject:
-
Keywords:
-
Creation Date:
-
Modification Date:
-
Creator:
-
PDF Producer:
-
PDF Version:
-
Page Count:
-
Preparing document for printing…
0%
Comments 0
Log in to post a comment