Python 读写excel文件

news/2024/11/8 17:27:54

最近需要用到Python来操作excel表,读取表格内容到数据库。所以就搜索了相关资料。
查找了一下,可以操作excel表的几个库有以下几个:

  • openpyxl

这个是推荐使用的库,可以读写Excel 2010以上格式,以.xlsx结尾的文件。

  • xlsxwriter

这个支持.xlsx,但是只支持写入,格式化等操作,不支持读取。

  • xlrd

这个支持读取数据,支持以xls结尾的文件,也就是比较老的格式。

  • xlwt

这个和上面的相对应,支持写入书和格式化数据,支持xls结尾的文件格式。

  • xlutils

这个是整合了xlrd和xlwt两个库的功能。

经过对比我还是选择了openpyxl这个库,下面针对这个库的使用进行说明

公众号【智能制造专栏】,以后技术类文章会发在专栏。
以下参考官方文档
本文代码托管在github上,点击链接

  • 创建一个工作簿
from openpyxl import Workbook
wb = Workbook()
ws = wb.active             #默认创建第一个表,默认名字为sheet
ws1 = wb.create_sheet()    #创建第二个表
ws1.title = "New Title"    #为第二个表设置名字
ws2 = wb.get_sheet_by_name(
New Title")                #通过名字获取表,和第二个表示一个表
ws1.save('your_name.xlsx') #保存
  • 读取一个工作簿中的内容
 from openpyxl import load_workbook
 wb = load_workbook('myname.xlsx')  #加载一个工作簿
 print wb.get_sheet_names()         #获取各个sheet的名字
  • 简单的用法
from openpyxl import Workbook
from openpyxl.compat import range
from openpyxl.cell import get_column_letter
wb = Workbook()
dest_filename = 'empty_book.xlsx'
ws1 = wb.active              #第一个表
ws1.title = "range names"    #第一个表命名
#遍历第一个表的1到39行,每行赋值从1到599.
for row in range(1,40):
    ws1.append(range(600))
ws2 = wb.create_sheet(title="Pi") # 创建第二个表
ws2['F5'] = 3.14     #为第二个表的F5单元格赋值为3.14
ws3 = wb.create_sheet(title="Data")  #创建第三个表
 /* 下面遍历第三个表的10到19行,27到53列,并对每一行的单元格赋一个当前列名的名字如下图 */
for row in range(10,20):
    for col in range(27,54):
        _=ws3.cell(column=col,row=row,value="%s" % get_column_letter(col)) #_当作一个普通的变量,一般表示后边不再使用
wb.save(filename=dest_filename) #保存

图片描述


http://www.niftyadmin.cn/n/4610391.html

相关文章

C#各种扩展名文件存入sql server数据库及读取到本地文件

sql server表结构如下: create table DataTable ( Id int identity(1,1) not null primary key, FileName nvarchar(100) not null, FilePath nvarchar(200) not null, Data varbinary(MAX) ) 主要方法: using System; using System.Collections.Generi…

Java容器使用总结

版权声明:本文为博主原创或整理自网络,欢迎转载,转载请注明出处。 Collection ├List │├LinkedList │├ArrayList │└Vector │└Stack ├Queue │├Deque │└LinkedList └Set ├SortedSet ├TreeSet └HashSet Map ├H…

如何判断当前主机是物理机还是虚拟机

Windows:在CMD里输入:Systeminfo | findstr /i "System Model"如果System Model:后面含有Virutal就是虚拟机,其他都是物理机或者用powershell命令:get-wmiobject win32_computersystem | fl modelLinux&…

1081 Rational Sum (20分)【分数的四则运算】

1081 Rational Sum (20分) Given N rational numbers in the form numerator/denominator, you are supposed to calculate their sum. Input Specification: Each input file contains one test case. Each case starts with a positive integer N (≤100), followed in th…

记一次错误卸载软件包导致Linux系统崩溃的修复解决过程

首先问题产生的缘由很简单,是我一同事在安装oracle一套软件时,按照要求需要binutils软件包的32位版本,然而在Oracle Linux已经装有64位,按理说是可以安装i686的,我猜应该是32位的版本低于这个已有的64位所以导致冲突而…

个人作业—找水王

题目:三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。如果你有一张当前论坛的帖子&a…

1059 Prime Factors (25分)【质因数分解】

1059 Prime Factors (25分) Given any positive integer N, you are supposed to find all of its prime factors, and write them in the format N p​1​​​k​1​​​​p​2​​​k​2​​​​⋯p​m​​​k​m​​​​. Input Specification: Each input file contain…

POJO百度百科

POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。 使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,没有业务逻辑,有时可以作为…