see: http://www.cnblogs.com/sunada2005/p/3193300.html

一、可使用的第三方库

python中处理excel表格,常用的库有xlrd(读excel)表、xlwt(写excel)表、openpyxl(可读写excel表)等。xlrd读数据较大的excel表时效率高于openpyxl,所以我在写脚本时就采用了xlrd和xlwt这两个库。介绍及下载地址为:http://www.python-excel.org/ 这些库文件都没有提供修改现有excel表格内容的功能。一般只能将原excel中的内容读出、做完处理后,再写入一个新的excel文件。

二、常见问题

使用python处理excel表格时,发现两个个比较难缠的问题:unicode编码和excel中记录的时间。

因为python的默认字符编码都为unicode,所以打印从excel中读出的中文或读取中文名的excel表或sheet时,程序提示错误UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)。这是由于在windows中,中文使用了gb2312编码方式,python将其当作unicode和ascii来解码都不正确才报出的错误。使用VAR.encode('gb2312')即可解决打印中文的问题。(很奇怪,有的时候虽然能打印出结果,但显示的不是中文,而是一堆编码。)若要从中文文件名的excel表中读取数据,可在文件名前加"u’表示将该中文文件名采用unicode编码。

有excel中,时间和日期都使用浮点数表示。可看到,当"2013年3月20日’所在单元格使用"常规’格式表示后,内容变为"41353’;当其单元格格式改变为日期后,内容又变为了"2013年3月20日’。而使用xlrd读出excel中的日期和时间后,得到是的一个浮点数。所以当向excel中写入的日期和时间为一个浮点数也不要紧,只需将表格的表示方式改为日期和时间,即可得到正常的表示方式。excel中,用浮点数1表示1899年12月31日。

importxlrddef read(filename, sheetNo=0):

book=xlrd.open_workbook(filename)

sh=book.sheet_by_index(sheetNo)

cols=sh.ncols

rows=sh.nrowsprint 'cols=',cols, 'rows=',rowsfor r in range(rows): #cols and rows start from 0

value = sh.cell_value(rowx=r,colx=0)

http://nullege.com/codes/search/xlwt.easyxf

#最简单的例子

importxlwt

workbook= xlwt.Workbook(encoding = 'ascii')

worksheet= workbook.add_sheet('My Worksheet')

worksheet.write(0, 0, label= 'Row 0, Column 0 Value')

workbook.save('Excel_Workbook.xls')#格式化cell的font

font = xlwt.Font() #Create the Font

font.name = 'Times New Roman'font.bold=True

font.underline=True

font.italic=True

style= xlwt.XFStyle() #Create the Style

style.font = font #Apply the Font to the Style

worksheet.write(0, 0, label = 'Unformatted value')

worksheet.write(1, 0, label = 'Formatted value', style) #Apply the Style to the Cell

#Font对象的属性

font.bold = True #May be: True, False

font.italic = True #May be: True, False

font.struck_out = True #May be: True, False

font.underline = xlwt.Font.UNDERLINE_SINGLE #May be: UNDERLINE_NONE, UNDERLINE_SINGLE, UNDERLINE_SINGLE_ACC, UNDERLINE_DOUBLE, UNDERLINE_DOUBLE_ACC

font.escapement = xlwt.Font.ESCAPEMENT_SUPERSCRIPT #May be: ESCAPEMENT_NONE, ESCAPEMENT_SUPERSCRIPT, ESCAPEMENT_SUBSCRIPT

font.family = xlwt.Font.FAMILY_ROMAN #May be: FAMILY_NONE, FAMILY_ROMAN, FAMILY_SWISS, FAMILY_MODERN, FAMILY_SCRIPT, FAMILY_DECORATIVE

font.charset = xlwt.Font.CHARSET_ANSI_LATIN #May be: CHARSET_ANSI_LATIN, CHARSET_SYS_DEFAULT, CHARSET_SYMBOL, CHARSET_APPLE_ROMAN, CHARSET_ANSI_JAP_SHIFT_JIS, CHARSET_ANSI_KOR_HANGUL, CHARSET_ANSI_KOR_JOHAB, CHARSET_ANSI_CHINESE_GBK, CHARSET_ANSI_CHINESE_BIG5, CHARSET_ANSI_GREEK, CHARSET_ANSI_TURKISH, CHARSET_ANSI_VIETNAMESE, CHARSET_ANSI_HEBREW, CHARSET_ANSI_ARABIC, CHARSET_ANSI_BALTIC, CHARSET_ANSI_CYRILLIC, CHARSET_ANSI_THAI, CHARSET_ANSI_LATIN_II, CHARSET_OEM_LATIN_I

font.colour_index = 2 #0:black, 1: white, 2: red, 3:light green, 4:blue

font.get_biff_record =?

font.height= 0x00C8 #C8 in Hex (in decimal) = 10 points in height.

font.name =?

font.outline=?

font.shadow=?#设置cell的宽度

worksheet.write(0, 0, 'My Cell Contents')

worksheet.col(0).width= 3333 #3333 = 1" (one inch).

#向cell添加一个日期

style =xlwt.XFStyle()

style.num_format_str= 'M/D/YY' #Other options: D-MMM-YY, D-MMM, MMM-YY, h:mm, h:mm:ss, h:mm, h:mm:ss, M/D/YY h:mm, mm:ss, [h]:mm:ss, mm:ss.0

worksheet.write(0, 0, datetime.datetime.now(), style)#向cell添加一个Formula

worksheet.write(0, 0, 5) #Outputs 5

worksheet.write(0, 1, 2) #Outputs 2

worksheet.write(1, 0, xlwt.Formula('A1*B1')) #Should output "10" (A1[5] * A2[2])

worksheet.write(1, 1, xlwt.Formula('SUM(A1,B1)')) #Should output "7" (A1[5] + A2[2])

#向cell添加一个Hyperlink

worksheet.write(0, 0, xlwt.Formula('HYPERLINK("http://www.google.com";"Google")')) #Outputs the text "Google" linking to http://www.google.com

#合并行列

worksheet.write_merge(0, 0, 0, 3, 'First Merge') #Merges row 0's columns 0 through 3.

font = xlwt.Font() #Create Font

font.bold = True #Set font to Bold

style = xlwt.XFStyle() #Create Style

style.font = font #Add Bold Font to Style

worksheet.write_merge(1, 2, 0, 3, 'Second Merge', style) #Merges row 1 through 2's columns 0 through 3.

#设置cell内部定位

alignment = xlwt.Alignment() #Create Alignment

alignment.horz = xlwt.Alignment.HORZ_CENTER #May be: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED

alignment.vert = xlwt.Alignment.VERT_CENTER #May be: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED

style = xlwt.XFStyle() #Create Style

style.alignment = alignment #Add Alignment to Style

worksheet.write(0, 0, 'Cell Contents', style)#添加cell的边框#Please note: While I was able to find these constants within the source code, on my system (using LibreOffice,) I was only presented with a solid line, varying from thin to thick; no dotted or dashed lines.

borders = xlwt.Borders() #Create Borders

borders.left = xlwt.Borders.DASHED #May be: NO_LINE, THIN, MEDIUM, DASHED, DOTTED, THICK, DOUBLE, HAIR, MEDIUM_DASHED, THIN_DASH_DOTTED, MEDIUM_DASH_DOTTED, THIN_DASH_DOT_DOTTED, MEDIUM_DASH_DOT_DOTTED, SLANTED_MEDIUM_DASH_DOTTED, or 0x00 through 0x0D.

borders.right =xlwt.Borders.DASHED

borders.top=xlwt.Borders.DASHED

borders.bottom=xlwt.Borders.DASHED

borders.left_colour= 0x40borders.right_colour= 0x40borders.top_colour= 0x40borders.bottom_colour= 0x40style= xlwt.XFStyle() #Create Style

style.borders = borders #Add Borders to Style

worksheet.write(0, 0, 'Cell Contents', style)#设置cell的背景颜色

pattern = xlwt.Pattern() #Create the Pattern

pattern.pattern = xlwt.Pattern.SOLID_PATTERN #May be: NO_PATTERN, SOLID_PATTERN, or 0x00 through 0x12

pattern.pattern_fore_colour = 5 #May be: 8 through 63. 0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan, 16 = Maroon, 17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow , almost brown), 20 = Dark Magenta, 21 = Teal, 22 = Light Gray, 23 = Dark Gray, the list goes on...

style = xlwt.XFStyle() #Create the Pattern

style.pattern = pattern #Add Pattern to Style

worksheet.write(0, 0, 'Cell Contents', style)

TODO: Things Left to Document- Panes -- separate views which are always inview- Border Colors (documented above, but nottaking effect as it should)- Border Widths (document above, but notworking as expected)-Protection-Row Styles- Zoom /Manification-WS Props?

Source Codefor reference available at: https://secure.simplistix.co.uk/svn/xlwt/trunk/xlwt/

print xlrd.cellname(0, 0) #(0,0)转换成 A1

print xlrd.cellnameabs(0, 0) #(0,0)转换成 $A$1

print xlrd.colname(30) #把列由数字转换为字母表示AE

#取类型

print sheet1.cell(1, 2).ctype

print sheet1.cell_type(1, 2)

print sheet1.row(1)[2].ctype

数据类型:

空:0

字符串:1数字:2日期:3布尔:4error:5

python快速处理excel表格-python 处理 Excel 表格相关推荐

  1. python快速编程入门例题-Python快速编程入门,打牢基础必须知道的11个知识点 !...

    Python被誉为全世界高效的编程语言,同时也被称作是"胶水语言",那它为何能如此受欢迎,下面我们就来说说Python入门学习的必备11个知识点,也就是它为何能够如此受欢迎的原因. ...

  2. python快速编程入门教程-python从入门到精通之30天快速学python视频教程

    python从入门到精通之30天快速学python视频教程 课程目录: python入门教程-1-Python编程语言历史及特性.mkv python入门教程-2-Python编程语言初接触.mkv ...

  3. python快速爬虫视频_“python怎么快速爬虫视频“python 爬网页视频教程

    用python怎样爬网页 # coding:utf8 import cookielib import urllib2 url = "http://blog.uouo123.com" ...

  4. python快速整理excel_一行一行整理EXCEL表太麻烦,试试python脚本,1秒写入数据

    最近工作中,要整理数据,本来是以sql脚本录入,但是id.barcode等数据不好整理,因为这几个字段要唯一. 所以想到用EXCEL表整理数据,再导入数据库中. 整理的过程中,发现EXCEL一行一行的 ...

  5. python快速注释html5_P29-30《Python爬虫技术5天速成…》学习过程笔记16(超详细记录)...

    对应原视频 第29集  补充flask(上) & 第30集  补充flask(下): 本篇概要: P29 --flask框架的样子 --创建flask框架后直接运行就报错.测试.解决 --通过 ...

  6. python快速处理ppt_070 用 Python 处理 PPT 文件

    python-pptx 是一个用于创建和更新PowerPoint(.pptx)文件的Python库. 典型的用途是从数据库内容生成自定义的PowerPoint演示文稿,可通过单击Web应用程序中的链接 ...

  7. python快速编程答案-100+Python编程题带你快速上手(附答案)

    春节马上就要到了,怎么能让自己在假期里不掉队?今天,给大家准备一个项目: 100+ 编程练习,这些题如果能坚持每天至少完成一道,一定可以帮大家轻松 get Python 的编程技能.目前,这个项目已经 ...

  8. python快速入门 pdf-零起点PYTHON机器学习快速入门 PDF |网盘链接下载|

    资料目录: 第 1 章 从阿尔法狗开始说起1 1.1 阿尔法狗的前世今生.......1 1.2 机器学习是什么.....2 1.3 机器学习大史记.....3 1.4 机器学习经典案例....... ...

  9. python快速编程入门例题-python编程入门知识练习

    python 入门基础知识练习 1编写第一个程序,目前使用的都是python 3 # print('hello world!') 2.查看当前python编辑器的版本号 # python -v 3.使 ...

  10. python做pca图_【教程】组学研究,用python快速实现PCA分析和绘图

    什么是PCA 主成分分析(Principal Component Analysis,PCA)是一种无监督的多元统计分析方法.在蛋白组学和代谢组学研究中能从总体上反应各组样本之间的总体差异和组内样本之间 ...

最新文章

  1. layer output 激活函数_一文彻底搞懂BP算法:原理推导+数据演示+项目实战(下篇)...
  2. 优化SQL步骤——查看SQL执行频率 || 定位低效率执行SQL
  3. python查询mysql表名字动态日期_Python之路day11作业-MySQL表查询
  4. Flink on Zeppelin 系列之:Yarn Application 模式支持
  5. python logging日志模块的使用
  6. aspen共沸精馏如何模拟_9月1011号Aspen plus:精馏精品培训!线上线下同时开展!另有惊喜活动等你参与!...
  7. MySQL_数据库表记录的操作
  8. java sql 联表查询系统_Spring Hibernate JPA 联表查询 复杂查询(转)
  9. 《学习OpenCV3》第2章 OpenCV初探
  10. 公文排版字体要求以及印制要求
  11. webstrom 汉化方法
  12. LMDB内存映射型数据库
  13. nanomsg交叉编译
  14. AR游戏能否摘掉“噱头”的帽子跻身主流产业?
  15. 剑指Offer——京东实习笔试题汇总
  16. 用python打开\显示\保存图像
  17. EasyUI学习笔记7:MIS开发利器_ datagrid插件(中)
  18. HTML网页设计: 一 HTML的基本结构
  19. crm系统部分功能截图
  20. 【NLP】主题模型文本分类

热门文章

  1. avi格式如何转换成mp4格式
  2. python编程入门第一课_[转载]Python第一课教学设计及反思
  3. json_encode函数参数详解
  4. 3小时Python基础速成(1)
  5. 北京春运更智能:自助验票、微信查询
  6. 计算并返回 x 的 算术平方根
  7. pytorch detach用法
  8. ajax401错误,使用jqueryajax捕获401未经授权的http响应
  9. 安全管理实务之一:补丁管理(转)
  10. 百度指数 自助采集 爬取 抓取 导出 提取 下载 查询