django导入导出excel实践

一、xlrd和xlwt模块介绍

   xlrd模块提供在任何平台上从excel电子表格(.xls和.xlsx)中提取数据的功能,xlwt模块提供生成与Microsoft Excel 95 到2003版本兼容的excel文件的功能。

1、安装方法

# 方法一:
pip3 install xlrd
pip3 install xlwt

# 方法二:
    在python官网http://pypi.python.org/pypi/xlrd/(xlwt)下载xlrd/xlwt的安装包。
    压缩包放置在python安装目录下python/Lib/site-packages。
    解压压缩包:tar zxvf xlrd-1.0.0.tar.gz
    进入到解压的文件夹:cd xlrd-1.0.0
    执行命令:python setup,py install

2、xlrd使用详解

(1)excel文档准备

  准备excel文档:联系人.xls,内容如下所示:

  

  

(2)xlrd获取sheet工作表名称和对象
import xlrd

# 打开Excel文件读取器,加上utf-8编码可防止遇到中文字符乱码
data = xlrd.open_workbook('联系人.xls', encoding_override='utf-8')

# 获取所有sheet工作表名称
sheetnames = data.sheet_names()
print(sheetnames)
"""
['银行1', '银行2']
"""
# 通过索引获取指定sheet工作表名称
sheet_name = data.sheet_names()[1]
print(sheet_name)
"""
银行2
"""
# 通过工作表名称获取sheet对象
table_name = data.sheet_by_name(sheet_name)
print(table_name)
"""
<xlrd.sheet.Sheet object at 0x10b657160>
"""
# 通过sheet索引获取sheet工作表对象
table_index = data.sheet_by_index(0)
print(table_index)
"""
<xlrd.sheet.Sheet object at 0x1073b3f28>
"""
(3)sheet工作表行/列操作
# 获取行数和列数
nrows = table_name.nrows     # 总行数
ncols = table_name.ncols     # 总列数
print("银行2表,总行数: %s,总列数: %s" % (nrows, ncols))
"""
银行2表,总行数: 5,总列数: 7
"""
# 根据sheet对象获取整行和整列的值
sheet_row_val = table_name.row_values(3)
sheet_col_val = table_name.col_values(3)
print("整行的值:%s , \n整列的值: %s" % (sheet_row_val, sheet_col_val))
"""
整行的值:['', '李九', '开发', 'IOS开发', 87888.0, 13213123.0, 'wang1@164.com'] , 
整列的值: ['', '工作职责', 'UI设计', 'IOS开发', '硬件维护']
"""
# 获取当前行的有效单元格长度
print(table_name.row_len(3))
print(table_index.row_len(3))
"""
7
8
"""
(4)sheet工作表单元格操作

  单元格是组成表格的最小单位,可以拆分或合并。每个数据的输入和修改都是在单元格中进行的。

# 获取指定单元格内容
print(table_name.cell(1,0).value)    # 第二行第一列
print(table_name.cell_value(2,1))    # 第三行第二列
print(table_name.row(1)[0].value)    # 第二行第一列
"""
机构名称
张八
机构名称
"""
# 获取单元格内容的数据类型
# ctype说明:0 empty, 1 string, 2 number, 3 date, 4 boolean, 5 error
print(table_index.cell(1,0).ctype)   # 银行1表,2行1列内容  机构名称
print(table_index.cell(3,4).ctype)   # 银行1表,4行5列内容  888
print(table_index.cell(2,6).ctype)   # 银行1表,3行7列内容  2019/5/7
"""
1
2
3
"""
# 日期单元格内容处理
from datetime import datetime, date
if table_index.cell(2,6).ctype == 3:
    print(table_index.cell(2, 6).value)
    date_value = xlrd.xldate_as_tuple(table_index.cell(2, 6).value, data.datemode)
    print(date_value)
    print(date(*date_value[:3]))
    print(date(*date_value[:3]).strftime('%Y/%m/%d'))
"""
43592.0
(2019, 5, 7, 0, 0, 0)
2019-05-07
2019/05/07
"""
# 获取number类型的单元格内容
if table_index.cell(3, 4).ctype == 2:
    print(table_index.cell(3, 4).value)
    num_value = int(table_index.cell(3, 4).value)   # 转为整型
    print(num_value)
"""
888.0
888
""" 
(5)获取合并单元格内容

  需要使用merged_cells属性,获取merged_cells返回的row和col低位的索引即可。

# 需要在读取文件时添加formatting_info参数,默认是False
# 需要设置为True,才能调用merged_cells属性获取到值
xls_data = xlrd.open_workbook('
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值