python处理excel实例-python操作excel方法示例

1.python处理Excel的几种方法:

方法一:利用pandas、

方法二、xlrd和xlwt两个模块分别用来读Excel和写Excel,只支持.xls和.xlsx格式,xlutils模块可以同时读写一个已存在的Excel文件,依赖于xlrd和xlwt

方法三、openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件;2007一下的版本为xls结尾的文件,需要使用xlrd(读)和xlwt(写)库进行操作

当然还有其它包。

备注:

1、Python自带的csv模块可以处理.csv文件。

2、excel表的文字编码如果是"gb2312” 读取后就会显示乱码,请先转成Unicode

3、workbook: 工作簿,一个excel文件包含多个sheet。

4、sheet:工作表,一个workbook有多个,表名识别,如"sheet1”,"sheet2”等。

5、cell: 单元格,存储数据对象

6、Python读取Excel中单元格的内容返回的有5种类型,即sheet.cell(x,y)的ctype属性返回的是数值型:ctype : 0 empty,1 string,2 number, 3 date,4 boolean,5 error

2、用xlrd包读取Excel文件

用法示例:

#-*- coding: utf-8 -*-

importxlrd

file_path= "D:/MyData/ex_lizq5/PycharmProjects/read_excel/ratedate.xlsx"

#打开文件,获得excel文件的工作簿对象

excel = xlrd.open_workbook(file_path,encoding_override='utf-8')#返回所有的sheet对象的list

all_sheet = excel.sheets() #获得工作簿sheet对象的方法,得到一个sheet列表

print(all_sheet)#通过索引得到sheet对象

printexcel.sheet_by_index(0)#通过索引得到sheet对象的名称

printexcel.sheet_by_index(0).name#通过sheet表的表名获得对象

print excel.sheet_by_name("Sheet0").name#遍历sheet列表,对每一个sheet进行操作

for each_sheet inall_sheet:#从对象列表中获得sheet对象

printeach_sheet#获得sheet表的名字

print "sheet的名字是:%s".decode('utf-8') % each_sheet.name#格式化打印

print("表名称为:{0},类型为:{1}".format(excel.sheet_by_index(0), type(excel.sheet_by_index(0))))#获取工作表的基本信息,表名、行数,列数等

sheet_name =[]

row_num=[]

col_num=[]for each_sheet inall_sheet:

sheet_name.append(each_sheet.name)print "该excel文件共有%d个sheet,当前sheet的名称是%s,该sheet有%d行,%d列".decode('utf-8') %(len(all_sheet),each_sheet.name,each_sheet.nrows,each_sheet.ncols)

row_num.append(each_sheet.nrows)

col_num.append(each_sheet.ncols)printsheet_nameprintrow_numprintcol_num#遍历sheet1的所有行和列

print "--------------读取每行----------------------".decode('utf-8')#得到某个sheet的总行数

print excel.sheet_by_name('Sheet0').nrows#通过sheet的报名获得sheet对象

mysheet = excel.sheet_by_name('Sheet0')#每行形成一个列表

print "-----打印序号为1的行,结果是一个列表------"

print mysheet.row_values(1)#打印序号为1的行的第0列

print mysheet.row_values(1)[0]#遍历每行的值

for value in mysheet.row_values(1):printvalue,print ""

print "-----用row(index)方法打印,结果是一个字典列表-----"

#Sheet.row(r)或Sheet.col(c)可以获得指定行或列,返回Cell对象的list,得到的是一个字典列表

print mysheet.row(1)#获取单元格(1,1)的值

print mysheet.cell_value(1,1)

3、尽量不用xlwt包写入Excel文件

在xlwt中生成的xls文件最多能支持65536行数据,如果数据太多,会报这个错误:

ValueError: row index (65536)not an intin range(65536)错误

写入示例:

#1. 导入模块

importxlwtdefwrite_excel():#2. 创建Excel工作薄

myWorkbook =xlwt.Workbook()#3. 添加Excel工作表

mySheet = myWorkbook.add_sheet('A Test Sheet')#4. 写入数据

myStyle = xlwt.easyxf('font: name Times New Roman, color-index red, bold on', num_format_str='#,##0.00') #数据格式

mySheet.write(i, j, 1234.56, myStyle)

mySheet.write(2, 0, 1) #写入A3,数值等于1

mySheet.write(2, 1, 1) #写入B3,数值等于1

mySheet.write(2, 2, xlwt.Formula("A3+B3")) #写入C3,数值等于2(A3+B3)

#5. 保存

myWorkbook.save('excelFile.xls')if __name__ == '__main__':#写入Excel

write_excel();print ('写入成功')

4、用openpyxl包写入Excel文件

#导包

importopenpyxl#写excel

defwrite_excel():

f= openpyxl.Workbook() #创建工作簿

sheet1=f.create_sheet()#sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok=True) #创建sheet

row0 = [u'L1',u'L2',u'L3',u'L4',u'问题',u'答案']#生成第一行

#for i in range(len(row0)):

#sheet1.cell(column=i,row=0).value='L1')

#生成后续

for jkey inrange(len(newTables)):

jk= 1

for cT inrange(arrayNum):

jk= jkey + 1

if cT ==0:

sheet1.cell(row=jk,column=cT+1).value='1'

else:

sheet1.cell(row=jk,column=cT+1).value='2'f.save("chatPy.xlsx") #保存文件

if __name__ == '__main__':#写入Excel

write_excel();print ('写入成功')

5 用pandas读写excel

用pandas处理excel和csv文件方法相同

https://blog.csdn.net/liufang0001/article/details/77856255

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的 Python 处理 Excel 数据并画图的示例: 首先,我们需要安装 `pandas`、`matplotlib` 和 `openpyxl` 这三个库。可以使用以下命令进行安装: ```python pip install pandas matplotlib openpyxl ``` 然后,假设我们有一个 Excel 文件 `data.xlsx`,其中有一个名为 `Sheet1` 的工作表,包含以下数据: | 日期 | 销售额 | | --------- | -------- | | 2021/1/1 | 1000 | | 2021/1/2 | 1500 | | 2021/1/3 | 2000 | | 2021/1/4 | 2200 | | 2021/1/5 | 1800 | | 2021/1/6 | 1300 | | 2021/1/7 | 1700 | | 2021/1/8 | 2100 | | 2021/1/9 | 2300 | | 2021/1/10 | 2500 | 我们可以使用以下代码读取这个 Excel 文件并将数据绘制成折线图: ```python import pandas as pd import matplotlib.pyplot as plt # 读取 Excel 文件 df = pd.read_excel('data.xlsx', sheet_name='Sheet1') # 绘制折线图 plt.plot(df['日期'], df['销售额']) plt.title('销售额趋势图') plt.xlabel('日期') plt.ylabel('销售额') plt.show() ``` 运行这段代码,就会得到如下的折线图: ![销售额趋势图](https://img-blog.csdn.net/20180529201512631?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQ2hpbmdHUFQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80) 这个示例中,我们使用了 `pandas` 库读取 Excel 文件中的数据,并使用 `matplotlib` 库绘制了折线图。如果需要将图表保存为图片文件,可以使用 `plt.savefig()` 方法。例如: ```python plt.savefig('sales.png') ``` 这将把图表保存为名为 `sales.png` 的图片文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值