asp网页生成excel 多sheet_excel中新增sheet页不覆盖之前的数据

1. 首先导入需要的包

# encoding:utf-8

import pandas as pd

import os

from openpyxl import load_workbook

import xlwt

import shutil

from xlutils.copy import copy

2. 导入excel中需要处理的sheet页可以精确到具体的列

#打印表头及第3列和第5列

df=pd.read_excel("./xxx.xlsx",sheet_name="sheet1",header=1,usecols=[3,5])

#print(df)

2.1 删除2列都为nan的行

#按行统计,有nan的数量:0,1,2(2为要删除的行)

df['df']=df['$第3列列名'].isnull()*1+df['$第5列列名'].isnull()*1

0c66b9e8bf7ba2c9e92dc255ea185f95.png

#过滤掉2列都为nan的行

data=df[df.ix[:,'df']<2].ix[:,:2]

"""

中间省略一些数据的处理过程,与本文无关。

"""

3. 把处理后的data转成Dataframe,然后导出

df1R=pd.DataFrame(data)

#print(type(df1R))

4. 保存csv格式

df1R.to_csv(os.getcwd()+"./new.csv")

或者简写df1R.to_csv("./new.csv")

5. 保存多个sheet页,新建excel时可以使用,否则会覆盖之前数据

work=pd.ExcelWriter('excel_output.xls')

df1R.to_excel(work,sheet_name='biubiu4')

df1R.to_excel(work,sheet_name='sheet11',header=0,index=False) #header=0没有表头

work.save()

1b6a1ac45d05b5ba17e605dbdc7cbff9.png

6. 如果是需要保留之前的sheet页,可以在之前Exel文件里面新增sheet,然后写入文件

6.1 复制一个上面生成的文件进行环境模拟测试

shutil.copyfile(os.getcwd()+'./excel_output.xls',os.getcwd()+'./excel_output_bak.xls')

6.2 复制原有表

filename = 'excel_output_bak.xls'

wb = xlrd.open_workbook(filename)

newb=copy(wb)

6.3 新增sheet页,参数是该sheet的名字,可自定义

wbsheet=newb.add_sheet('sheet21')

6.4 向新sheet中写入数据。 先添加表头,因为测试数据只有一列,若实际环境有多列可自行添加。

wbsheet.write(0,0,'new')

6.5 在新的sheet页写入数据,df1R为上文的DataFrame数据

if df1R.shape[0] > 1:

for i in range(df1R.shape[0]):

wbsheet.write(i + 1, 0, df1R.iloc[i, 0])

if df1R.shape[1] > 1:

for j in range(1,df1R.shape[1]):

wbsheet.write(i+1,j,int(df1R.iloc[i,j]))

6.6 保存

newb.save(os.getcwd()+'./excel_output_bak.xls')

9112b528103ca95d204c8eec25a7e667.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值