Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1235046
  • 博文数量: 164
  • 博客积分: 2993
  • 博客等级: 少校
  • 技术积分: 1718
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-24 11:42
文章分类

全部博文(164)

文章存档

2014年(1)

2013年(36)

2012年(90)

2011年(37)

分类: Python/Ruby

2013-10-10 11:38:25

python有很多模块都是用来操作excel的,比如xlrd,xlwt,pyExcelerator。用着很方便,但是问题是,只能支持到excel2003。虽然一般的应用其实足够了,但是如果遇到了导出大量数据(超过65535条)的需求时,excel2003就不够用了。所以我就只好去找一个能支持excel2007的模块。

google了一下,发现了这个openpyxl,不过网上也没什么中文的文档可以看,于是就自己琢磨琢磨。

I.安装

openpyxl的最新版本是1.5.0 下载地址 http://pypi.python.org/pypi/openpyxl/1.5.0

需求python的版本是2.6+ ,也就是说,如果centOS系统的机器想用,那得升级系统的python。。。

安装就是解压缩,然后cd到目录,然后

python setup.py install (安装)

II.读取excel2007文件



  1. # -*- coding: utf-8 -*-
  2. from openpyxl.reader.excel import load_workbook
  3. import MySQLdb
  4. #加载excel表
  5. wb = load_workbook(filename = r'20130606.xlsx')
  6. #获取表名称
  7. sheetnames = wb.get_sheet_names()
  8. #获取第一个表的句柄
  9. ws = wb.get_sheet_by_name(sheetnames[0])


  10. #显示表名,表行数,表列数

  11. print "Work Sheet Titile:",ws.title

  12. print "Work Sheet Rows:",ws.get_highest_row()

  13. print "Work Sheet Cols:",ws.get_highest_column()
  14. #定义字典并存入字典
  15. data_dic = {}
  16. #获取行数
  17. row_count=ws.get_highest_row()
  18. i=1
  19. for rx in range(4,row_count):
  20.     temp_list = []
  21.     #获取数据,row为行号,column为列号
  22.     w1 = ws.cell(row = rx,column = 8).value

  23.     w2 = ws.cell(row = rx,column = 9).value
  24.     temp_list = [w1, w2]

  25.     data_dic[i] = temp_list
  26.     i+=1
  27. #打印字典
  28. print data_dic
  29. #存入mysql数据库
  30. try:
  31.     conn=MySQLdb.connect(host='localhost',user='root',passwd='root',port=3306)
  32.     cur=conn.cursor()
  33.     
  34.     conn.select_db('database')

  35.     values=[]
  36.     for (k,v) in data_dic.items():
  37.         values.append((k,v[0]))
  38.         values.append((k,v[1]))
  39.     
  40.     cur.executemany('insert into tablename values(%s,%s)',values)
  41.  
  42.     conn.commit()
  43.     cur.close()
  44.     conn.close()
  45.  
  46. except MySQLdb.Error,e:
  47.      print "Mysql Error %d: %s" % (e.args[0], e.args[1])
  48. print 'success'

阅读(1636) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册