码迷,mamicode.com
首页 > 编程语言 > 详细

python 第三方包之xlwt 转换成excel

时间:2015-08-17 23:53:33      阅读:528      评论:0      收藏:0      [点我收藏+]

标签:


简介


xlrd是python的一个第三方模块,可以实现跨平台读Microsoft Excel文件。(它有一个兄弟叫xlwt,专注于写Excel文件。)

它并不像win2com那样借助COM技术来访问Excel,而是直接分析Excel文件格式,从中解析数据。因此你可以在任何支持python的平台上使用excel文件。这一点它比win2com要优秀得多。

另外,它对unicode支持的很好,这也是我青睐它的重要原因。

它的工作原理所限,我们不能期望它覆盖Excel全部的功能,访问到全部的数据。

比如,下面这些数据类型xlrd会忽略掉:


图表,宏,图片等嵌入对象(包括嵌入的worksheet)。

VBA模块。

公式(只能识别公式的计算结果,而不是公式本身)。

注释。

链接。

但一些简单的读取还是得心应手的,这已经能满足大多数情况下的需求。

现在它能支持的Excel版本包括:2004, 2003, XP, 2000, 97, 95, 5.0, 4.0, 3.0, 2.1, 2.0。 官方未说明它是否能支持Excel 2007。

它有两个分支,分别是:


xlrd (http://pypi.python.org/pypi/xlrd) 针对Python 2.x系列。

xlrd3(http://pypi.python.org/pypi/xlrd3) 针对Python 3.x系列。


这两个分支是100%兼容的,也就是说,它们的使用完全一样,你在3.x系列中怎么用xlrd,在2.x系列中仍然这么用。

以下的实际操作都使用xlrd3,在python 3.2下完成。


试用


假设我们有一个文件叫test.xls,位于D:\Workspace\Python\xlrd3-test\test.xls

其内容如下:

技术分享

clipboard[1]


这是一张9行4列的PC主机报价单,当然,价格全是扯淡。

下面使用xlrd程序将PC这张表的内容打印出来。


01 import xlrd3

02  

03 def main():

04    xlsfile=xlrd3.open_workbook("D:\\Workspace\\Python\\xlrd3-test\\test.xls")

05    try:

06        mysheet = xlsfile.sheet_by_name("PC")

07    except:

08        print("no sheet in %s named PC")

09        return

10  

11    # total rows and cols

12    print("%d rows, %d cols"%(mysheet.nrows, mysheet.ncols))

13  

14    for row in range(0, mysheet.nrows):

15        temp=""

16        for col in range(0, mysheet.ncols):

17            if mysheet.cell(row, col).value != None:

18                temp+=str(mysheet.cell(row, col).value)+"\t"

19        print(temp)

20  

21 if __name__ == ‘__main__‘:

22    main()

输出:


clipboard[2]

技术分享


将lang下的txt文件导出到一个excel里:


 

view sourceprint?

01.import os

02.import glob

03.path = os.getcwd()

04.files = glob.glob(‘../trunk/Resource/lang/ja/*.txt‘)

05.import xlwt3

06.if len(files) > 0:

07.wb = xlwt3.Workbook()

08.for file in files:

09.fileName = file.split(‘\\‘)[1].split(‘.‘)[0]

10.print(fileName)

11.ws = wb.add_sheet(fileName)

12.with open(file, encoding=‘utf-8‘) as a_file:

13.line_number = 0

14.for a_line in a_file:

15.a_line = a_line.rstrip()

16.mark = a_line.find("=")

17.ws.write(line_number, 0, a_line[0:mark])

18.ws.write(line_number, 1, a_line[mark+1:])

19.ws.col(0).width = 8000

20.ws.col(1).width = 40000

21.line_number += 1

22.a_file.close()

23.wb.save(‘langPack_ja.xls‘)


将sourceExcel下的excel文件导出为各txt文件:

view sourceprint?

01.import os

02.import glob

03.import xlrd3 as xlrd

04.import re

05. 

06.path = os.getcwd()

07. 

08.files = glob.glob(‘sourceExcel/*‘)

09. 

10.for file in files:

11.wb = xlrd.open_workbook(file)

12.for sheetName in wb.sheet_names():

13.txtFile = open(‘outputTxts/‘ + sheetName + ‘.txt‘, mode=‘w‘, encoding=‘utf-8‘)

14.sheet = wb.sheet_by_name(sheetName)

15.for rownum in range(sheet.nrows):

16.v1 = sheet.cell(rownum, 0).value

17.if (type(v1) == float):

18.v1 = str(v1)

19.v1 = re.sub(‘\.0*$‘, "", v1)

20.v1 = v1.rstrip()

21.v2 = sheet.cell(rownum, 1).value

22.if (type(v2) == float):

23.v2 = str(v2)

24.v2 = re.sub(‘\.0*$‘, "", v2)

25.v2 = v2.rstrip()

26.dataStr = v1 + ‘=‘ + v2 + ‘\n‘

27.txtFile.write(dataStr)

28.txtFile.close()


python 第三方包之xlwt 转换成excel

标签:

原文地址:http://my.oschina.net/duguaoxue/blog/493688

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!