Python处理Excel(转载)

1. Python 操作 Excel 的函数库

我主要尝试了 3 种读写 Excel 的方法:

1> xlrd, xlwt, xlutils: 这三个库的好处是不需要其它支持,在任何操作系统上都可以使用。xlrd 可以读取 .xls, .xlsx 文件,非常好用;但因为 xlwt 不能直接修改 Excel 文档,必须得复制一份然后另存为其它文件,而且据说写复杂格式的 Excel 文件会出现问题,所以我没有选它来写 Excel 文件。

2> openpyxl: 这个库也是不需要其它支持的,而且据说对 Office 2007 格式支持得更好。遗憾地是,我经过测试,发现它加载 Excel 文件的效率比 xlrd 慢 3 倍以上,内存使用在 10 倍以上,于是就放弃了。

3> win32com: Python Win32 扩展,这个库需要运行环境为 Windows+Office 对应版本。由于 Python Win32 扩展只是把 COM 接口包装了一下,可以视为与 VBA 完全相同,不会有读写格式上的问题。尝试了一下用 win32com 读取 Excel 文件,效率还是比 xlrd 慢一些。

由于读取效率上 xlrd > win32com > openpyxl,所以我自然选择了 xlrd 用来读取统计报表;而最终输出的报表格式较复杂,所以选择了 win32com 直接操作 Excel 文件。

2. Python 里的关系型数据库

SQLite 是一个非常轻量级的关系型数据库,很多语言和平台都内置 SQLite 支持,也是 iOS 和 Android 上的默认数据库。Python 的标准库里也包含了 sqlite3 库,用起来非常方便。

3. 用 xlrd 读取 Excel 并插入数据库样例

如果数据量不大,直接用 Python 内部数据结构如 dict, list 就够了。但如果读取的几张表数据量都较大,增加个将数据插入数据库的预处理过程就有很大好处。一是避免每次调试都要进行耗时较长的 Excel 文件载入过程;二是能充分利用数据库的索引和 SQL 语句强大功能进行快速数据分析。

 1  import xlrd
 2     import sqlite3
 3
 4     # 打开数据库文件
 5     device_city_db = sqlite3.connect(‘device_city.db‘)
 6     cursor = device_city_db.cursor()
 7
 8     # 建表
 9     cursor.execute(‘DROP TABLE IF EXISTS device_city‘)
10     cursor.execute(‘CREATE TABLE device_city (device_id char(16) PRIMARY KEY, city varchar(16))‘)
11
12     # 打开 device 相关输入 Excel 文件
13     device_workbook = xlrd.open_workbook(‘输入.xlsx‘)
14     device_sheet = device_workbook.sheet_by_name(‘设备表‘)
15
16     # 逐行读取 device-城市 映射文件,并将指定的列插入数据库
17     for row in range(1, device_sheet.nrows):
18        device_id = device_sheet.cell(row, 6).value
19        if len(device_id) > 16:
20            device_id = device_id[0:16]
21        if len(device_id) == 0:
22            continue
23        city = device_sheet.cell(row, 10).value
24        # 避免插入重复记录
25        cursor.execute(‘SELECT * FROM device_city WHERE device_id=?‘, (device_id,))
26        res = cursor.fetchone()
27        if res == None:
28            cursor.execute(‘INSERT INTO device_city (device_id, city) VALUES (?, ?)‘,
29                           (device_id, city))
30        else:
31            if res[1] != city:
32                print ‘%s, %s, %s, %s‘ % (device_id, city, res[0], res[1])
33     device_city_db.commit()

4. 将结果写入 Excel 文件样例

使用 win32com 写入 Excel 的时候要注意,一定要记得退出 Excel,否则下次运行会出错。这需要增加异常处理语句,我这里偷了个懒,出了异常后要手动杀死任务管理器中的 excel 进程。至于 win32com 中类的接口,可以从MSDN 网站查阅。

 1 import win32com.client as win32
 2 import os
 3 excel = win32.gencache.EnsureDispatch(‘Excel.Application‘)
 4 excel.Visible = False
 5 # 貌似这里只能接受全路径
 6 workbook = excel.Workbooks.Open(os.path.join(os.getcwd(), ‘输出.xlsx‘))
 7 month_sheet = workbook.Worksheets(1)
 8 # 计算文件中实际有内容的行数
 9 nrows = month_sheet.Range(‘A65536‘).End(win32.constants.xlUp).Row
10 # 操作 Excel 单元格的值
11 for row in range(5, nrows-4):
12    month_sheet.Cells(row, 1).Value += something
13 # 保存工作簿
14 workbook.Save()
15 # 退出 Excel
16 excel.Application.Quit()

Python处理Excel(转载)

时间: 2024-10-23 21:51:14

Python处理Excel(转载)的相关文章

使用python读写excel

项目中要在excel要跨工作簿根据一列数据获取另一列的数据,而excel本身的函数vlookup一直不太好用,只能用程序进行处理了,最近刚接触了python,灵机一动使用Python进行处理,先将json格式处理成csv格式,再保存为excel,由于工作日报中要根据之前的json数据进行统计,数据行较大,人工进行工作量较大,然后使用python根据excel的内容进行处理. import xlrd import xlwt from xlutils.copy import copy import

python读取excel文件(xrld模块)

Python读取excel文件 一.python  xlrd模块 安装 mac 下安装python  xlrd模块 http://www.crifan.com/python_read_excel_xls_file_xlrd/comment-page-1/ python setup.py install 在mac 下出现的错误是 http://stackoverflow.com/questions/18199853/error-could-not-create-library-python-2-7

Python对Excel操作详解

  Python对Excel操作详解 文档摘要: 本文档主要介绍如何通过python对office excel进行读写操作,使用了xlrd.xlwt和xlutils模块.另外还演示了如何通过Tcl  tcom包对excel操作. 关键字: Python.Excel.xlrd.xlwt.xlutils.TCl.tcom     1 Python简介 Python是一种面向对象.直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定.它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务.

Python处理Excel文档(xlrd, xlwt, xlutils)

简介 xlrd,xlwt和xlutils是用Python处理Excel文档(*.xls)的高效率工具.其中,xlrd只能读取xls,xlwt只能新建xls(不可以修改),xlutils能将xlrd.Book转为xlwt.Workbook,从而得以在现有xls的基础上修改数据,并创建一个新的xls,实现修改. (以下属性或方法并非全部,需要更多属性请参看文档:建议先参考文末Demo,再深入了解) xlrd Book(class) 由xlrd.open_work("example.xls"

八、python操作excel及网络编程和异常处理

一.python操作excel 1.读excel,xlrd模块用来读excel # book = xlrd.open_workbook(r'students.xlsx')#打开excel# print(book.sheet_names())#获取所有sheet的名字# sheet = book.sheet_by_index(0)#根据sheet页的位置去取sheet# sheet2 = book.sheet_by_name('Sheet2')#根据sheet页的名字获取sheet页# print

Delphi中控制Excel(转载)

用Delphi从数据库中取得资料,然后导出到Excel中做成报表是个不错的选择,因为Excel强大的报表功能那可是没话说前提Delphi中要 uses comobj;var Excel:Variant;一.Excel操作1.创建Excel对象Excel := CreateOleObject( Excel.Application );2.显示ExcelExcel.Visible:=true;3.更改标题Excel.Caption:=Excel的标题;4.退出ExcelExcel.Quit;二.工作

Python处理Excel表格

对于操作Excel,需要Xlrd/xlwt这两个模块,下面推荐出系统性学习的网址: python操作Excel读写--使用xlrd 官方文档 Python 使用 Xlrd/xlwt 操作 Excel 用Python读写Excel文件 1 Windows下先下载 xlwt 和xlrd 2. 解压xlrd-0.9.2.tar.gz至指定文件夹 3. 在CMD控制台下切换至上述指定文件夹路径,输入命令 python setup.py install 完成安装 Linux下安装同安装python 或者用

python读取excel表格生成sql语句 第一版

由于单位设计数据库表·,都用sql.不知道什么原因不用 powerdesign或者ermaster工具,建表很痛苦  作为程序猿当然要想办法解决,用Python写一个程序解决 需要用到 xlrd linux下 sudo pip install xlrd 主要是适用于db2数据库 excel 表结构 其中 number是不正确的字段类型 不知道同事为啥这么设置.这里程序里有纠错,这个程序就是将sql语句拼好. __author__ = 'c3t' # coding:utf-8 import xlr

Python之Excel操作

Python的Excel操作需要另外下载安装对应Python版本的xlrd和xlwt包,用于对Excel的读取和写入. 安装方法:直接解压后,在字符命令界面cd到setup.py的目录,执行命令"Python setup.py install"即可. xlrd(下面有些是方法,有些是属性,属性后面不加括号) 1. excel = xlrd.open_workbook(excel_path):打开指定路径的Excel文件,得到对应Excel的Excel对象(整个Excel文件的对象).