python有很多模块都是用来操作excel的,比如xlrd,xlwt,。用着很方便,但是问题是,只能支持到excel2003。虽然一般的应用其实足够了,但是如果遇到了导出大量数据(超过65535条)的需求时,excel2003就不够用了。所以我就只好去找一个能支持excel2007的模块。
google了一下,发现了这个openpyxl,不过网上也没什么中文的文档可以看,于是就自己琢磨琢磨。
I.安装
openpyxl的最新版本是1.5.0 下载地址
需求python的版本是2.6+ ,也就是说,如果centOS系统的机器想用,那得升级系统的python。。。
安装就是解压缩,然后cd到目录,然后
python setup.py install (安装)
II.读取excel2007文件
-
# -*- coding: utf-8 -*-
-
from openpyxl.reader.excel import load_workbook
-
import MySQLdb
-
#加载excel表
-
wb = load_workbook(filename = r'20130606.xlsx')
-
#获取表名称
-
sheetnames = wb.get_sheet_names()
-
#获取第一个表的句柄
-
ws = wb.get_sheet_by_name(sheetnames[0])
-
-
-
#显示表名,表行数,表列数
-
-
print "Work Sheet Titile:",ws.title
-
-
print "Work Sheet Rows:",ws.get_highest_row()
-
-
print "Work Sheet Cols:",ws.get_highest_column()
-
#定义字典并存入字典
-
data_dic = {}
-
#获取行数
-
row_count=ws.get_highest_row()
-
i=1
-
for rx in range(4,row_count):
-
temp_list = []
-
#获取数据,row为行号,column为列号
-
w1 = ws.cell(row = rx,column = 8).value
-
-
w2 = ws.cell(row = rx,column = 9).value
-
temp_list = [w1, w2]
-
-
data_dic[i] = temp_list
-
i+=1
-
#打印字典
-
print data_dic
-
#存入mysql数据库
-
try:
-
conn=MySQLdb.connect(host='localhost',user='root',passwd='root',port=3306)
-
cur=conn.cursor()
-
-
conn.select_db('database')
-
-
values=[]
-
for (k,v) in data_dic.items():
-
values.append((k,v[0]))
-
values.append((k,v[1]))
-
-
cur.executemany('insert into tablename values(%s,%s)',values)
-
-
conn.commit()
-
cur.close()
-
conn.close()
-
-
except MySQLdb.Error,e:
-
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
-
print 'success'
阅读(2398) | 评论(0) | 转发(0) |