python excel 新增sheet_python excel多sheet保存,同sheet追加不覆盖

本文介绍了如何使用Python进行Excel文件的操作,包括读取数据库内容存储到多个sheet、读取Excel进行计算后存入新sheet,以及如何在同一个sheet中追加数据而不覆盖原有数据。主要涉及的库有cx_Oracle、pandas和openpyxl。
摘要由CSDN通过智能技术生成

1.多sheet存储

==1.1读取数据库并存入excel多个sheet==1

2

3

4

5

6

7

8

9

10

11

12

13import cx_Oracle

import pandas as pd

conn_oracle = cx_Oracle.connect('user','passwd','ip:port/db')

cur_oracle = conn_oracle.cursor()

result = pd.read("sql")

result1 = pd.read("sql1")

writer = pd.ExcelWriter(r'C:\Users\admin\Desktop\XXX.xlsx')

result.to_excel(writer,sheet_name='XXX')

###不保存索引result.to_excel(writer,sheet_name='XXX',index=False)

###指定索引result.to_excel(writer,sheet_name='XXX',index=["a","b","c"],columns=["one","two","three"])

result1.to_excel(writer,sheet_name='XXX')

writer.save()

writer.close()

==1.2读取excel并进行计算存入excel多个sheet==1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20###写入结果的表

writer = pd.ExcelWriter(r'C:UsersadminDesktopXXX.xlsx')

###读取需要处理的数据

data = pd.read_excel(r'C:UsersadminDesktopXXX.xlsx')

print(data)

###条件筛选

a=data['xxx'].drop_duplicates()

###数据处理

for i in a:

da = data[data['xxx]==i]

print(da)

###累计求和

da['新增列名']=da['xxx'].sort_values(ascending=False).cumsum()

###求占比

da['新增列名']=da['xxx']/da['xxx'].sum()

print(da)

###存入excel

da.to_excel(writer,sheet_name='%s'%i)

writer.save()

writer.close()

2.同sheet覆盖追加数据

==2.1按sheet读取数据==1

2

3

4

5

6

7

8

9

10

11

12import xlrd

sale=xlrd.open_workbook(r'C:UsersadminDesktopresult2.xlsx')

names = sale.sheet_names()

name_l = len(names)

print(name_l)

for i in range(name_l):

table = sale.sheets()[i]

nrows = table.nrows

a = []

for i in range(nrows):

a.append(table.row_values(i))

print(a)

==2.2 数据追加==1

2

3

4

5

6

7

8

9

10

11

12

13

14

15import openpyxl

data = openpyxl.load_workbook('excel_test.xlsx')

# 取第一张表

sheetnames = data.get_sheet_names()

table = data.get_sheet_by_name(sheetnames[0])

table = data.active

print(table.title) # 输出表名

nrows = table.max_row # 获得行数

value = a

index = len(value)

for i in range(0, index):

for j in range(0, len(value[i])):

table.cell(row=i+nrows, column=j+1, value=str(value[i][j]))

data.save('excel_test.xlsx')

print("xlsx格式表格追加数据成功!")

==数据追加完整代码==1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26import xlrd

import openpyxl

sale=xlrd.open_workbook(r'C:UsersadminDesktopresult2.xlsx')

names = sale.sheet_names()

name_l = len(names)

for i in range(name_l):

table = sale.sheets()[i]

nrows = table.nrows

a = []

for i in range(nrows):

a.append(table.row_values(i))

data = openpyxl.load_workbook('excel_test.xlsx')

# 取第一张表

sheetnames = data.get_sheet_names()

table = data.get_sheet_by_name(sheetnames[0])

table = data.active

print(table.title) # 输出表名

nrows = table.max_row # 获得行数

value = a

index = len(value)

for i in range(0, index):

for j in range(0, len(value[i])):

table.cell(row=i+nrows, column=j+1, value=str(value[i][j]))

data.save('excel_test.xlsx')

print("xlsx格式表格追加数据成功!")

==pandas常用方法==导入数据

pd.read_csv(filename):从CSV文件导入数据

pd.read_excel(filename):从Excel文件导入数据

pd.read_sql(sql, conn):从数据库导入数据导出数据

df.to_excel(filename):导出到Excel文件

df.to_sql(sql, conn):导出数据到SQL查看数据

df.head(n):查看对象的前n行,默认为5行

df.tail(n):查看对象的最后n行

df.shape[]:查看行数和列数 df.shape[0]查看行数,df.shape[1]查看列数

df.describe():查看数值的描述性统计数据选取

df[‘column_name’]

df[‘column’].sort_values(ascending=False)默认是升序排列,加ascending=False参数为降序

df.groupby(column)

df.groupbu([column1,column2])分组拼接

result = pd.merge(df1,df2,how=‘left’,left_on=‘column1’,right_on=‘column2’)

how参数为选取什么连接方式,左连还是右连,left_on和right_on分别为两个表关联的字段

==xlrd 模块 主要用来读取excel==data = xlrd.open_workbook(filename) #打开Excel文件读取数据

names = data.sheet_names() #返回book中所有工作表的名字

table = data.sheets()[i] #通过索引顺序获取

table = data.sheet_by_index(sheet_indx)) #通过索引顺序获取

table = data.sheet_by_name(sheet_name)#通过名称获取

nrows = table.nrows #获取该sheet中的行数

table.row_values(rowx, start_colx=0, end_colx=None) #返回由该行中所有单元格的数据组成的列表

ncols = table.ncols #获取列表的列数

table.col_values(colx, start_rowx=0, end_rowx=None) #返回由该列中所有单元格的数据组成的列表

==openpyxl常用方法==data = openpyxl.load_workbook(‘excel_test.xlsx’)

#取第一张表

data.get_sheet_by_name(sheetnames[0])

#创建新的sheet

my_sheet = data.create_sheet()

#获取当前正在显示的sheet

table = data.active

nrows = table.max_row # 获得行数

ncolumns = table.max_column # 获得列数

table.cell(row=i, column=j, value=str(value[i][j]))#写入数据

data.save(‘excel_test.xlsx’)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值