前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python读写excel

python读写excel

作者头像
机器学习和大数据挖掘
发布2019-07-02 09:19:06
1.8K0
发布2019-07-02 09:19:06
举报
文章被收录于专栏:数据挖掘数据挖掘

在工作中往往需要读取 excel 文件,但是读取 excel 的方式很多,本文只列举集中比较好用的读写 2003 或者 2007 的方法:

读取2007版本的excel

读取xlsx 需要用库 openpyxl , 安装方式: pip3 install openpyxl 。设置 excel 的路径:

代码语言:javascript
复制
import openpyxl
openpyxl.excelPath = "F:/code/python/test.xlsx"
workBook=load_workbook(excelPath)

读取第一个 Sheet 表中的内容:

代码语言:javascript
复制
# 仅仅读取Sheet1
workSheet = workBook.get_sheet_by_name("Sheet1")

这个库读取行和列是从 1 开始的,而不是从 0 开始的,所以设置初始的行和列都为 1 :

代码语言:javascript
复制
# 行、列的初始值
rownum = 1
columnnum = 1

# 获取第一行第一列单元格的值
cell = workSheet.cell(row=rownum, column=columnnum).value
print(cell)

当然也可以读取第二个 Sheet 表中的内容,只要将 get_sheet_by_name 改成 Sheet2 就行了。

写入2007版本的excel

写入 xlsx 需要用到库 xlsxwriter ,安装方式 pip3 install xlsxwriter 。新建或者是打开某个 excel ,我这里是新建一个 excel

代码语言:javascript
复制
# 打开某个excel
with xlsxwriter.Workbook("F:/code/python/test1.xlsx") as workbook:

新建的 Sheet 的名字可以随便取,不是新建的要先读取当前 Sheet 的内容出来,再把自己的内容添加进去:

代码语言:javascript
复制
# 设置Sheet的名字为haha
worksheet = workbook.add_worksheet("haha")

设置列首、行宽、列高:

代码语言:javascript
复制
# 列首
title = ["id", "img", "label"]
worksheet.write_row('A1', title)

# B列列宽
worksheet.set_column("B:B", 32)
# 第i行的行高
worksheet.set_row(i, 150)

写入数据:

代码语言:javascript
复制
# 数据
i=0
row = ["123","456","789"]
worksheet.write_row('A' + str(i + 1), row)

切记要关闭 excel :

代码语言:javascript
复制
workbook.close()

如果想插入图片:

代码语言:javascript
复制
from io import BytesIO
from urllib import request
url="https://www.tybai.com/static/jpg/head.jpg"
# 缓存图片
image_data = BytesIO(request.urlopen(url).read())
# 插入图片
worksheet.insert_image('A1',url,{'image_data': image_data})

读取2003版本的excel

读取xls 需要用库 xlrd , 安装方式: pip3 install xlrd 。设置 excel 的路径:

代码语言:javascript
复制
excelPath = "F:/code/python/test.xls"

加载 excel

代码语言:javascript
复制
# 加载xlsx
wb = xlrd.open_workbook(excelPath)

读取第一个 Sheet 表中的内容:

代码语言:javascript
复制
# 仅仅读取Sheet1
ws = wb.sheet_by_name("Sheet1")

这个库读取行和列是从 0 开始的,而不是从 1 开始的,所以设置初始的行和列都为 0 :

代码语言:javascript
复制
# 行、列的初始值
rownum = 0
columnnum = 0
# 获取第一行第一列单元格的值
cel = ws.cell(rowx=rownum, colx=columnnum).value
print(cel)

当然也可以读取第二个 Sheet 表中的内容,只要将 sheet_by_name 改成 Sheet2 就行了。

附上源码:

代码语言:javascript
复制
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from openpyxl import load_workbook
import xlsxwriter
import xlrd

# ----------读取xlsx-----------
excelPath = "F:/code/python/test.xlsx"
# 加载xlsx
workBook = load_workbook(excelPath)
# 仅仅读取Sheet1
workSheet = workBook.get_sheet_by_name("Sheet1")

# 行、列的初始值
rownum = 1
columnnum = 1

# 获取第一行第一列单元格的值
cell = workSheet.cell(row=rownum, column=columnnum).value
print(cell)

# ----------写入xlsx-----------
# 打开某个excel
with xlsxwriter.Workbook("F:/code/python/test1.xlsx") as workbook:
    # 设置Sheet的名字为haha
    worksheet = workbook.add_worksheet("haha")
    # 行、列的初始值
    rownum = 0
    columnnum = 0
    # 依次写入每个单元格
    worksheet.write(rownum, columnnum, "one")
workbook.close()

# ----------读取xls-----------
excelPath = "F:/code/python/test.xls"
# 加载xlsx
wb = xlrd.open_workbook(excelPath)
# 仅仅读取Sheet1
ws = wb.sheet_by_name("Sheet1")
# 行、列的初始值
rownum = 0
columnnum = 0
# 获取第一行第一列单元格的值
cel = ws.cell(rowx=rownum, colx=columnnum).value
print(cel)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-08-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 读取2007版本的excel
  • 写入2007版本的excel
  • 读取2003版本的excel
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档