文档章节

python 第三方包之xlwt 转换成excel

文弱书生_罗剑
 文弱书生_罗剑
发布于 2015/08/17 21:54
字数 803
阅读 245
收藏 5


简介


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]

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]

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()


© 著作权归作者所有

文弱书生_罗剑
粉丝 4
博文 81
码字总数 17500
作品 0
长沙
程序员
私信 提问
Python处理csv、xlsx、pdf

一、csv文件的处理 CSV(Comma-Separated Values)即逗号分隔值,可以用Excel打开查看。由于是纯文本,任何编辑器也都可打开。与 Excel 文件不同,CSV 文件中: 值没有类型,所有值都是字符串 ...

blackfoxya
2018/06/08
0
0
Python xlrd、xlwt、xlutils读取、修改Excel文件

Python xlrd、xlwt、xlutils读取、修改Excel文件 一、xlrd读取excel 这里介绍一个不错的包xlrs,可以工作在任何平台。这也就意味着你可以在Linux下读取Excel文件。 首先,打开workbook; impo...

Sophia_tj
2015/06/12
0
0
xlrd/xlwt - python与excel表格交互

开始使用xlrd,下载安装包,解压,安装省略 下载http://pypi.python.org/pypi/xlrd 假设我的表格文件叫demo.xls,三个sheet,第一个sheet内容如下 则要访问3行第D列单元格则使用如下代码 >>...

彼得
2014/03/11
0
0
Python和它高大上的插件们

Python操作Excel: Python操作Excel主要依赖两个库: xlrd(用于读Excel):https://pypi.python.org/pypi/xlrd This package is for reading data and formatting information from Excel ......

Iuranus
2014/12/16
0
0
这是Python操作Excel表格最好的教材, 爬虫工程师都对它爱不释手

因为数据是用.csv格式保存的,所以我们通常用Excel来处理。然而其工作量是非常大的,反复操作一些相同的动作,所以Python爬虫师那种动则几十万的数据量,都会利用Python脚本来给我们处理。 ...

Python新世界
2018/08/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

偶遇 JDK 1.8 还未修复的 SecureRandom.getInstance("SHA1PRNG") 之 bug

楼主今天兴高采烈的在部署环境,下载 JDK,打包项目,上传至服务器。 配置 JDK ,打包上传项目楼主就不在这里重复了,读者自行解决哈! 1. 启动项目 java -jar xxxx.jar 令楼主没有想到的是:...

Ryan-瑞恩
22分钟前
8
0
【更新】Stimulsoft Reports v2019.3.1发布,新增对OData v4的支持功能

下载Stimulsoft Report.Ultimate v2019.3.1试用版 集所有报表解决方案于一体的综合性平台 Stimulsoft Reports.Ultimate是集所有报表解决方案于一体的综合性平台,拥有在JavaScript、ASP.NET...

xiaochuachua
22分钟前
1
0
JVM源码分析之javaagent原理完全解读

JVM源码分析之javaagent原理完全解读 概述 本文重点讲述javaagent的具体实现,因为它面向的是我们Java程序员,而且agent都是用Java编写的,不需要太多的C/C++编程基础,不过这篇文章里也会讲...

BryceLoski
28分钟前
1
0
git记住密码

git取消记住密码 git config --system --unset credential.helper git记住密码 git config --global credential.helper store...

大灰狼wow
30分钟前
2
0
java 面试知识点笔记(十四)异常体系

问:Error和Exception的区别? ps:Throwable上层是Object Error:程序无法处理的系统错误,编译器不做检查 Exception:程序可以处理的异常,捕获后可能恢复 RuntimeException:不可预知的,...

断风格男丶
32分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部