python操作excel_python操作excel,让你的报表不再复制粘贴

python操作excel,你的报表不再复制粘贴

     这么久不见我,感谢你们都没有离开我,那是我前段时间呢,就是我好忙,你们知道吗?我知道你们不知道,但是,请原谅我是有理由没更新的,所以,千万不要骂小编我,真实没时间啊~~

    今天这个代码的背景是,因为,你要频繁的做模型,但是模型有报告,你要做日常汇报,但是汇报要有报告对吧,报告就要有事数据,对不对,那数据它呢,偏偏还要再数据库或者你的python的dataframe里面,那这样子就很烦啊,是不是!!!你就一直不停地复制粘贴,每次都是复制粘贴啊,这时候我伟大的python就在你的背后说了一句,你这么还在愚蠢的操作excel,然后python就给你丢了这几个包,xlwt,xlrd,xlutils,让你的python跟你的excel无缝衔接了~~

    先简单的介绍这个包的主要功能:

    Python中一般使用xlrd库来读取Excel文件,使用xlwt库来生成Excel文件,使用xlutils库复制和修改Excel文件。在应用层面来说,就是xlrd包是用来读进来你的excel,相当于只读功能,不能修改,xlwt包不但有读改的权限,很神奇xlwt,没有另存为的功能,然后就有了xlutils包了,所以你操作excel还是要这三个库来一起用的。

    那么接下来就这三个包的函数简单介绍一下746ab01eb5b3822eb6a83d04fffafe6a.gif

1xlrd

import xlrd

pi_excel= xlrd.open_workbook("我是你爸爸.xls")

#打开你的excel

pi_excel.nsheets

#统计这个excel有多少个sheet

pi_excel.sheets()

#列出这个excel的所有sheet的列表

pi_excel.sheet_names()

#列出这个excel的sheet名字

pi_sheet=pi_excel.sheets()[0]

#获取第一个sheet

pi_sheet=pi_excel.sheet_by_name(u"这个是目录")

#通过名字获取目录

pi_sheet.nrows

#看下你读的sheet的行数

pi_sheet.ncols

#看下你读的sheet的列数

#这里注意一下哈,你合并单元格还是算那么多行哈,不是你合并就是算一行了

pi_sheet.row(i)

pi_sheet.row_values(i)

#读第几行的内容出来,从0开始数哈,这两个差不多功能

pi_sheet.col(i)

pi_sheet.col_values(i)

#读第几列的内容出来

2xlwt

from xlwt import *

pi_book = Workbook()

#我创建了一个excel,里面什么都没有

pi_sheet = pi_book.add_sheet('Sheet1')

#然后我创建了sheet1

pi_sheet.write(0, 0, label = '我是你爸爸')

#再然后我就在A1的那个空格写入了”我是你爸爸“五个字

pi_sheet.write(1, 0, xlwt.Formula('A1*B1')) # 输出 "10" (A1[5] * A2[2])

#再然后我就在A2那个空格填了一个公式A1*B1

pi_book.save('./我是你的大屁.xls')

#最后我把这个数据保存成了名字为“我是你的大屁”的xls文件

3xlutils

from xlrd import open_workbook

from xlutils.copy import copy

pi_book = open_workbook('我是你爸爸.xls',formatting_info=True)

#我打开了我存在本地的“我是你爸爸.xls”,而且告诉他,你不准把我的“我是你爸爸.xls"里面的格式给我改了,不准哈

workbook = xlutils.copy.copy(rb)

#然后啊,我需要改下里面的东西,但是我不能再原先的东西里面改,所以要拷贝一份在python里面改

pi_sheet=workbook.get_sheet(u'我是你爸爸')

#我读了里面一个叫“我是你爸爸”的sheet

workbook.close()

#然后我觉得突然之前没啥写,所以我就他关了

wb.save('我是你爸爸_2.xls')

#之后我把它另存为另外有一个xls,叫“我是你爸爸_2”

以下是一个实际例子

import pandas as pd

import datetime

import xlrd

import xlutils.copy

import os

import xlrd

import xlwt

from xlutils.copy import copy

from xlwt import *

import pandas as pd

import datetime

filepath = 'C:/CSV_DATA/data_test.xls'

rb = xlrd.open_workbook(filepath,formatting_info=True)

#读入一个datatest的文件,formatting_info=True这个参数是保证格式不变,但是如果你的文件是xlsx会报错,所以事先修改为xls

wb = xlutils.copy.copy(rb)

#创建一个可写入的副本

sheet1=wb.get_sheet(u'目录')

#读入“目录”这个sheet

gg=summary.dtypes.reset_index(drop=False)

for k in range(len(gg['index'])):

   print(k)

   col=1+k

   m=gg['index'][k]

   row = 6

   for l in summary[m]:

       print(l)

       print(row)

       sheet1.write(row, col, l)

       row += 1

#把summary这个dataframe写进去

wb.close()

wb.save('C:/CSV_DATA/data_test_outee.xls')

#写完之后另存为data_test_outee.xls

以下的实例分析是输出模型逻辑回归的参数到excel9a13ccd0d8c2c49f9aa667c8dbfadd56.png

import xlsxwriter

# 首先对python的statmodels输出逻辑回归的参数结果转化成Dataframe格式

results_as_html = LR.summary().tables[1].as_html()

LRresult=pd.read_html(results_as_html,header=0, index_col=0)[0]

# 创建Excel表格模型文档python写入.xls,并添加一个sheet名叫逻辑回归统计量

# workbook指向模型文档python写入.xls,worksheet指向sheet逻辑回归统计量

workbook = xlsxwriter.Workbook('d:\模型文档python写入.xls')

worksheet = workbook.add_worksheet('逻辑回归统计量')

# 下面根据自己的文档规范逐行逐列读入数据

row=0

col=0

worksheet.write(row, col, '标签')

worksheet.write(row, col + 1, 'coef')

worksheet.write(row, col + 2, 'std err')

row+=1

worksheet.write(row, col, LRresult.index[-1])

worksheet.write(row, col + 1, LRresult['coef'][-1:])

worksheet.write(row, col + 2, LRresult['std err'][-1:])

row+=1

for i in range(len(LRresult)-1):

    worksheet.write(row, col, LRresult.index[i])

    print(LRresult.index[i])

    worksheet.write(row, col + 1, LRresult['coef'][i])

   worksheet.write(row, col + 2, LRresult['std err'][i])

    row += 1

# 关闭并保存表格内容

workbook.close()

今天的文章参考了以下两个链接,感谢链接博主的辛苦编写9bdff92c1b9b6bafc1764aff07448cb5.png

http://www.bkjia.com/Pythonjc/926154.html

https://blog.csdn.net/qq_35417815/article/details/80928793

那么今天的更新就到这里啦c8c156b5c3755d98b12caf3f02173948.gif~~~~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值