1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > python写excel文件不覆盖_python excel多sheet存储 同sheet不覆盖追加数据

python写excel文件不覆盖_python excel多sheet存储 同sheet不覆盖追加数据

时间:2019-01-15 07:44:29

相关推荐

python写excel文件不覆盖_python excel多sheet存储 同sheet不覆盖追加数据

1.多sheet存储

方式一:读取数据库并存入excel多个sheet

import 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()

方式二:读取excel并进行计算存入excel多个sheet

###写入结果的表

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

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

data = pd.read_excel(r'C:\Users\admin\Desktop\XXX.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读取数据

import xlrd

sale=xlrd.open_workbook(r'C:\Users\admin\Desktop\result2.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 数据追加

import 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格式表格追加数据成功!")

数据追加完整代码

import xlrd

import openpyxl

sale=xlrd.open_workbook(r'C:\Users\admin\Desktop\result2.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’)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。