Python WordEXCEL,ACCESS 2008-05-26 10:50

taxidermistplateΛογισμικό & κατασκευή λογ/κού

7 Νοε 2013 (πριν από 3 χρόνια και 9 μήνες)

100 εμφανίσεις

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敎慭攠e⁦il敮慭敩渠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()