python操作excel

在python中,对excel表格

wlrd 读取excel表中的数据 
xlwt 创建一个全新的excel文件,然后对这个文件进行写入内容以及保存。 
xlutils 读入一个excel文件,然后进行修改或追加,不能操作xlsx,只能操作xls。

一、读excel表

读excel要用到xlrd模块
1、导入模块

import xlrd

2、打开excel文件,表格从0计数

import xlrd
excel_calss = xlrd.open_workbook(r'C:\Users\joker\Desktop\ecs.xlsx')
sheet = excel_calss.sheets()[0]              # 通过索引顺序获取
sheet = excel_calss.sheet_by_index(0)        # 通过索引顺序获取
sheet = excel_calss.sheet_by_name(u'Sheet1') # 通过名称获取

3、获取表格行数和列数,行,列从0计数

import xlrd
excel_calss = xlrd.open_workbook(r'C:\Users\joker\Desktop\ecs.xlsx')
sheet = excel_calss.sheet_by_index(0)        # 通过索引顺序获取
num_rows = sheet.nrows       # 行数 int
num_cols = sheet.ncols       # 列数 int

4、获取表格整行和整列的值,以列表形式返回,行,列从0计数

sheet_row18 = sheet.row_values(18)  # 获取行得内容,列表形式
sheet_row19 = sheet.row_values(19)
sheet_col1 = sheet.col_values(1)    # 获取列内容,列表形式
sheet_col2 = sheet.col_values(2)

5、获取表格单元格数据

cell_A1 = sheet.cell(0,0).value     # 指定单元格A1数据
cell_5145 = sheet.row(19)[1].value  # 使用行索引确定单元格数据
cell_5145 = sheet.col(1)[1].value   # 使用列索引确定单元格数据

二、写excel操作

1、导入模块

import xlwt

2、创建workbook

workbook = xlwt.Workbook(encoding='utf-8', style_compression=0)
encoding:设置字符编码,一般要这样设置:w = Workbook(encoding=’utf-8’),就可以在excel中输出中文了。默认是ascii 
style_compression:表示是否压缩,不常用 

3、创建一个sheet对象,一个sheet对象对应Excel文件中的一张表格

sheet = workbook.add_sheet('班级', cell_overwrite_ok=True)
其中的joker是这张表的名字,cell_overwrite_ok,表示是否可以覆盖单元格,其实是Worksheet实例化的一个参数,默认值是False 

4、向表中添加数据

sheet.write(0, 0, '名称')  # 其中的'0-行, 0-列'指定表中的单元,'名称'是向该单元写入的内容
sheet.write(0, 1, '年龄')
username = 'joker'
sheet.write(1, 0, username ) 
age = '18'
sheet.write(1, 1, age)

5、保存

workbook.save(r'C:\Users\joker\Desktop\ecs.xls')

三、追加数据

import xlrd
import xlutils.copy
excel_calss = xlrd.open_workbook(r'C:\Users\joker\Desktop\ecs.xls')
excel_copy = xlutils.copy.copy(excel_calss)
sheet=excel_copy.get_sheet(0)
sheet.write(0,2,'性别')
excel_copy.save(r'C:\Users\joker\Desktop\ecs.xls')
# 追加前:
# 姓名 年龄
# 追加后:
# 姓名 年龄 性别

四、csv转化为excel,PYTHON在生成excel的时候注意是文件扩展名要以2003 为准,保存文件名扩展名改成 xls

import csv
import xlwt

workbook = xlwt.Workbook()
sheet2 = workbook.add_sheet("Sheet 2", cell_overwrite_ok=True)
file = open(r'D:\label.csv')
lines = csv.reader(file)
r = 0
for line in lines:
    col = 0
    for c in line:
        sheet2.row(r).write(col,c, style=xlwt.Style.default_style)
        #print(c,end=' ')
        col += 1
    r += 1
    sheet2.flush_row_data()
file.close()   
workbook.save("csv2excel.xls")

五、 EXCEL通过请求下载

from io import BytesIO
import xlsxwriter

def filexlsx(request):
    url = "拼接字符串"
    time_str = str(datetime.datetime.today().time()).split('.')[0]
    date_str = str(datetime.datetime.today().date())
    filename_str = date_str + '_' + time_str+'.xlsx'
    dataExecl = Page_data.dataexcel # 数据
    if dataExecl:
        x_io = BytesIO()
        work_book = xlsxwriter.Workbook(x_io)
        work_sheet = work_book.add_worksheet("uid_video")
        work_sheet.write(0, 0, 'uid')  # 其中的'0-行, 0-列'指定表中的单元,'uid'是向该单元写入的内容
        work_sheet.write(0, 1, 'url_video')

        hang = 0
        for key in dataExecl:
            if dataExecl.get(key):
                hang += 1
                line = 0
                work_sheet.write(hang, line, key)
                line = 1
                for value in dataExecl[key]:
                    work_sheet.write(hang, line, url + key + '/' + value)
                    hang += 1
            else:
                pass

        work_book.close()
        res = HttpResponse()
        res["Content-Type"] = "application/octet-stream"
        res["Content-Disposition"] = "filename=%s" % filename_str
        res.write(x_io.getvalue())
        return res
    else:
        return HttpResponse('500')

 

posted @ 2019-02-27 00:14  liqianlong  阅读(349)  评论(0编辑  收藏  举报