python xlwt xlrd_用xlrd和xlwt操作Excel文档
工作當中經常要操作excel文檔,有些完全是純粹的重復勞動。在我的工作中就遇到這樣一個需求:
1. 存在兩個excel文檔(source.xls/target.xls),列數據是一致的
2. 文檔source.xls的數據來源于target.xls,經常要修改source.xls文檔中的數據,但是兩個文檔中有一列(COLUMN_INDEX)的數據只要存在就會保持不變
3. 文檔target.xls已經存在一個office控件,可以從某個數據庫讀取數據,寫回該文檔
4. 數據庫中的數據每天都會更新
5. 需要經常更新source.xls,將不存在該文檔但存在于target.xls的數據copy過來,依據列(COLUMN_INDEX)
需求出來了,google了下,發(fā)現可以用xlrd/xlwt來操作excel文檔,模塊名取得挺有意思哦,根據名字看,顯示xlrd用來讀excel,xlwt用來寫羅。至于為啥讀和寫會是不同的第三方包,或者是excel的數據存取比較復雜吧。
xlrd模塊api文檔:http://www.lexicon.net/sjmachin/xlrd.html#xlrd.Cell-class
下面是Python實現:
#!/usr/bin/env python
#coding=utf-8
'''
created by 2010-6-26
author: py_zhu
'''
import xlrd
import xlwt
SOURCE_FILE = "source.xls"
TARGET_FILE = "target.xls"
RESULT_FILE = "result.xls"
COLUMN_INDEX = 3
def readColumnIndex():
columnIndex = -1;
#read column index(from config file)
columnIndex = COLUMN_INDEX
return columnIndex
def calc():
source = set([])
target = dict()
columnIndex = readColumnIndex()
sheet = xlrd.open_workbook(SOURCE_FILE).sheet_by_index(0)
for i in range(sheet.nrows):
source.add(sheet.cell_value(i, columnIndex))
sheet = xlrd.open_workbook(TARGET_FILE).sheet_by_index(0)
for i in range(sheet.nrows):
#(cell_value, rowIndex)
target.put(sheet.cell_value(i, columnIndex), i)
for i in source:
if i in target:
del target[i]
#create new execel file
workbook = xlwt.Workbook(encoding = 'utf-8')
resultSheet = workbook.add_sheet('result_sheet')
resultRows = target.values()
for i in range(len(resultRows)):
for j in range(sheet.ncols):
resultSheet.write(i, j, sheet.cell_value(resultRows[i], j))
workbook.save(RESULT_FILE)
def main():
calc()
if __name__ == '__main__':
main()
1
頂
0
踩
分享到:
2010-06-26 22:04
瀏覽 7378
評論
總結
以上是生活随笔為你收集整理的python xlwt xlrd_用xlrd和xlwt操作Excel文档的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 创建data_微软推出 Microsof
- 下一篇: python高效编程15个利器_你不知道