python——xlrd、xlwt、xlutils模块

主要包括三个功能,读取excel数据,将数据写入excel并保存,在excel中追加数据并保存

三个主要模块:  xlrd  xlwt  xlutils

 

1.数据的读取

  (1)打开一个工作簿

  (2)获取sheet表单

  (3)通过sheet表单进行按行或按列读取

import xlrd

#----打开工作簿---------
work_book = xlrd.open_workbook('实验.xlsx')

#---获取sheet表单-------
sheet_names = work_book.sheet_names()
sheet_first = work_book.sheet_by_name(sheet_names[0])  #获取了第一个表单

#---通过sheet表单进行按行或按列读取---
#按行读取---
nrows = sheet_first.nrows
print(nrows)
for i in range(nrows):
    print(sheet_first.row_values(i))  #读取第i行

#按列读取---
ncols = sheet_first.ncols
for j in range(ncols):
    print(sheet_first.col_values(j))

#---获取单元格信息------
print(sheet_first.cell_value(1,0))  #excel表格中 行列号是从零开始的

 

2.数据的写入

  (1)创建一个工作簿

  (2)在工作簿中添加一个表单

  (3)写表头

  (4)写内容

  (5)保存

import xlwt
head = ['姓名', '年龄', '学号', '年级']

data = [
        ['小红', 10.0, 19910.0, '三年级'],
        ['小明', 10.0, 19911.0, '三年级'],
        ['小刚', 11.0, 19912.0, '三年级'],
        ['小黑', 12.0, 19913.0, '三年级']
        ]

#---创建一个工作簿---
work_book = xlwt.Workbook(encoding = 'utf-8')

#---在工作簿中添加一个表单---
sheet = work_book.add_sheet(sheetname = '学生信息')

#---写表头---
for i in range(len(head)):      #设置循环的次数,head的长度就是列数
        sheet.write(0,i,head[i])

#---写内容---
for i in range(len(data)):
        for j in range(len(head)):
                sheet.write(i+1,j,data[i][j])

#---保存---
work_book.save(r'C:\Users\Administrator\Desktop\实验结果.csv')

 

3.数据的追加

  (1)打开工作簿

  (2)读取第一个表单

  (3)读取里面写入的行数

  (4)将xlrd的workbook编程xlwt workbook对象

  (5)写入信息

import xlrd,xlwt
from xlutils.copy import copy
info = [['天天',9,14599,'一年级'],
         ['小熊',15,20322,'八年级'],
         ['小白',14,19322,'七年级']]

#---打开工作簿---
work_book = xlrd.open_workbook('实验结果.csv')

#---获取第一个表单---
sheet_names = work_book.sheet_names()
sheet_first = work_book.sheet_by_name(sheet_names[0])

#---读取里面写入的行数---
nrows = sheet_first.nrows

#---将xlrd的workbook变成xlwtworkbook对象
work_book_new = copy(work_book)

#---写入信息---
new_sheet = work_book_new.get_sheet(0)

#写入行数
i = nrows
for item in info:
        for j in range(sheet_first.ncols):
                new_sheet.write(i,j,item[j])
                #写完一行,行数+1
        i += 1

work_book_new.save(r'C:\Users\Administrator\Desktop\实验结果.csv')

 

 

应用:

import pandas as pd
import os
import xlrd,xlwt
from xlutils.copy import copy

path=r"C:\Users\Administrator\Desktop\一_3日间分时段"
df_f=pd.DataFrame([])

#---创建文件,写表头---
list = ['六时','七时','八时','九时','十时','十一时','十二时','十三时','十四时','十五时','十六时','十七时']
ti = 0
head = ['预警类型',1,2,3,4,5,6]
work_book = xlwt.Workbook(encoding = 'utf-8')     #以写入的方式打开文档,没有则会新建一个文档
sheet = work_book.add_sheet(sheetname = '统计数据')   #在工作簿中添加表单并定义表单名
#---写表头---
for i in range(len(head)):      #设置循环的次数,head的长度就是列数
    sheet.write(0,i,head[i])      #设置写入第0行,第i列,内容为 head[i]
work_book.save('结果.csv')      #保存文件,传入保存路径

for filename in os.listdir(path):
    #---读取工作簿中的内容---
    #--打开工作簿--
    work_book = xlrd.open_workbook(filename)

    #---获取sheet表单-------
    sheet_names = work_book.sheet_names()
    sheet_first = work_book.sheet_by_name(sheet_names[0])  #获取了第一个表单

    #按列读取---
    ncols = sheet_first.ncols
    l14 = sheet_first.col_values(14)

    # ---统计次数---
    s1 = 0
    s2 = 0
    s3 = 0
    s4 = 0
    s5 = 0
    s6 = 0
    for i in range(len(l14)):

        if l14[i] == 1.0:
            s1 += 1
        if l14[i] ==2.0:
            s2 += 1
        if l14[i] == 3.0:
            s3 += 1
        if l14[i] == 4.0:
            s4 += 1
        if l14[i] == 5.0:
            s5 += 1
        if l14[i] == 6.0:
            s6 += 1

    res = [s1,s2,s3,s4,s5,s6]

    data = [list[ti]]
    for i in res:
        d = i/len(l14)*100
        ret = ('%.2f%%'%d)
        data.append(ret)

    print(data)

    #--------追加内容----------
    #---打开工作簿---
    work_book = xlrd.open_workbook('结果.csv')    #以读的方式打开工作簿

    #---获取第一个表单---
    sheet_names = work_book.sheet_names()   #获取工作簿中所有的表单名
    sheet_first = work_book.sheet_by_name(sheet_names[0])   #定位到第一个表单

    #---读取里面写入的行数---
    nrows = sheet_first.nrows

    #---将xlrd的workbook变成xlwt workbook对象
    work_book_new = copy(work_book)         #将工作簿变为可写入状态

    #---写入信息---
    new_sheet = work_book_new.get_sheet(0)  #锁定第一张表单

    #写入行数
    i = nrows
    for j in range(len(data)):
        new_sheet.write(i,j,data[j])    #写入数据,第i行,第j列,内容为data[j]

    ti +=1
    work_book_new.save('结果.csv')    #将工作簿保存

 

posted @ 2020-09-18 20:25  呱呱、、  阅读(398)  评论(0编辑  收藏  举报