导航:首页 > 编程语言 > python拆分excel表模板

python拆分excel表模板

发布时间:2022-12-23 21:22:14

‘壹’ 如何用python3 将一个大的excel文件(.xlsx)分割为多个excel的文件,sheet 不变。以下是我的代码:

我觉得你要处理数据的话最好用数据库,把excel中的数据读入到数据库中再处理就很轻松了。用python本身支持的sqlite就够了,才800多兆而已。

‘贰’ python对excel操作

Python对于Excel的操作是多种多样的,掌握了相关用法就可以随心所欲的操作数据了!

操作xls文件

xlrd(读操作):

import xlrd

1、引入xlrd模块

workbook=xlrd.open_workbook("36.xls")

2、打开[36.xls]文件,获取excel文件的workbook(工作簿)对象

names=workbook.sheet_names()

3、获取所有sheet的名字

worksheet=workbook.sheet_by_index(0)

4、通过sheet索引获得sheet对象

worksheet为excel表第一个sheet表的实例化对象

worksheet=workbook.sheet_by_name("各省市")

5、通过sheet名获得sheet对象

worksheet为excel表sheet名为【各省市】的实例化对象

nrows=worksheet.nrows

6、获取该表的总行数

ncols=worksheet.ncols

7、获取该表的总列数

row_data=worksheet.row_values(n)

8、获取该表第n行的内容

col_data=worksheet.col_values(n)

9、获取该表第n列的内容

cell_value=worksheet.cell_value(i,j)

10、获取该表第i行第j列的单元格内容

xlwt(写操作):

import xlwt

1、引入xlwt模块

book=xlwt.Workbook(encoding="utf-8")

2、创建一个Workbook对象,相当于创建了一个Excel文件

sheet = book.add_sheet('test')

3、创建一个sheet对象,一个sheet对象对应Excel文件中的一张表格。

sheet.write(i, j, '各省市')

4、向sheet表的第i行第j列,写入'各省市'

book.save('Data\\36.xls')

5、保存为Data目录下【36.xls】文件

操作xlsx文件

openpyxl(读操作):

import openpyxl

1、引入openpyxl模块

workbook=openpyxl.load_workbook("36.xlsx")

2、打开[36.xlsx]文件,获取excel文件的workbook(工作簿)对象

names=workbook.sheetnames

worksheet=workbook.worksheets[0]

worksheet=workbook["各省市"]

ws = workbook.active

6、获取当前活跃的worksheet,默认就是第一个worksheet

nrows=worksheet.max_row

7、获取该表的总行数

ncols=worksheet.max_column

8、获取该表的总列数

content_A1= worksheet['A1'].value

9、获取该表A1单元格的内容

content_A1=worksheet.cell(row=1,column=1).value

10、获取该表第1列第1列的内容

openpyxl(写操作):

workbook=openpyxl.Workbook()worksheet = workbook.active

3、获取当前活跃的worksheet,默认就是第一个worksheet

worksheet.title="test"

4、worksheet的名称设置为"test"

worksheet = workbook.create_sheet()

5、创建一个新的sheet表,默认插在工作簿末尾

worksheet.cell(i,j,'空')

6、第i行第j列的值改成'空'

worksheet["B2"]="空"

7、将B2的值改成'空'

worksheet.insert_cols(1)

8、在第一列之前插入一列

worksheet.append(["新增","台湾省"])

9、添加行

workbook.save("Data\\36.xlsx")

10、保存为Data目录下【36.xlsx】文件

pandas处理excel文件

pandas操作:

import pandas as pd

1、引入pandas模块

data = pd.read_excel('36.xls')

2、读取[36.xls]或者[36.xlsx]文件

data = pd.read_csv('36.csv')

3、读取[36.csv]文件

data=data.dropna(subset=['店铺'])

4、过滤掉data店铺列有缺失的数据

data.sort_values("客户网名", inplace=True)

5、将data数据按照客户网名列进行从小到大排序

data = pd.read_csv(36.csv, skiprows = [0,1,2],sep = None, skipfooter = 4)

6、读取[36.csv]文件,前三行和后四行的数据略过

data = data.fillna('空')

7、将data中的空白处填充成'空'

data.drop_plicates('订单','first',inplace=True)

8、data中的数据,按照【订单】列做去重处理,保留第一条数据

data=pd.DataFrame(data,columns=['订单','仓库'])

9、只保留data中【订单】【仓库】列的数据

data = data[(data[u'展现量'] > 0)]

10、只保留【展现量】列中大于0的数据

data= data[data["订单"].str.contains('000')]

11、只保留【订单】列中包含'000'的数据

data= data[data["仓库"]=='正品仓']

12、只保留【仓库】列是'正品仓'的数据

xs= data[data["店铺"]=='南极人']['销售额']

13、获取店铺是南极人的销售额数据

data['订单'] = data['订单'].str[3:7]

14、【订单】列的值只保留4-8个字节的值

data["邮资"] = np.where((data['店铺'].str.contains('T|t')) & -(data['仓库'] == '代发仓'), 8, data['邮资'])

15、满足店铺列包含 T 或 t 并且仓库不等于'代发仓'的话,将邮资的值改成8,否则值不变

data = np.array(data).tolist()

16、将data从DataFrame转换成列表

data=pd.DataFrame(data)

17、将列表转换成DataFrame格式

zhan = data[u'展现'].sum().round(2)

18、将data中所有展现列数据求和,并取两位小数

sum=data.groupby(['店铺'])['刷单'].sum()

19、将data中按照店铺对刷单进行求和

counts=data['店铺'].value_counts()

20、将data按照店铺进行计算

avg=data.groupby(['店铺'])['刷单'].mean()

21、将data按照店铺对刷单进行求平均数

count = pd.concat([counts,sum], axis=1, ignore_index=True, sort=True)

22、将counts和sum两个DataFrame进行了组合

count=count.rename(index=str, columns={0: "订单", 1: "成本"})

23、将新生成的DataFrame列名进行修改

data = pd.merge(sum, counts, how='left', left_on='店铺', right_on='店铺')

24、将列表转换成DataFrame格式

from openpyxl import Workbook 

wb=Workbook()  

ws1=wb.active 

data.to_excel('36.xlsx') 

wb.close()

25、data完整的写入到关闭过程,执行此操作的时候【36.xlsx】不能是打开状态

excel格式操作

样式处理:

1、打开【36.xlsx】

sheet=workbook.worksheets[0]

2、将第一个sheet对象赋值给sheet

sheet.column_dimensions['A'].width = 20.0

3、将A列的宽度设置为20

sheet.row_dismensions[1].height = 20.0

4、将第一行的行高设置为20

sheet.merge_cells('A1:A2')

5、将sheet表A1和A2单元格合并

sheet.unmerge_cells('A1:A2')

6、将sheet表A1和A2单元格取消合并

sheet.insert_rows(2,2)

7、将sheet表从第2行插入2行

sheet.insert_cols(3,2)

8、将sheet表从第3列插入2列

sheet.delete_rows(2)

9、删除第2行

sheet.delete_cols(3, 2)

10、将sheet表从第3列开始删除2列

from openpyxl.styles import Font, Border, PatternFill, colors, Alignment

11、分别引入字体、边框、图案填充、颜色、对齐方式

sheet.cell(i,j).font = Font(name='Times New Roman', size=14, bold=True, color=colors.WHITE)

12、设置sheet表第 i 行第 j 列的字体

sheet.cell(i,j).alignment = Alignment(horizontal='center', vertical='center')

13、设置sheet表第 i 行第 j 列的字体对齐方式

left, right, top, bottom = [Side(style='thin', color='000000')] * 4sheet.cell(i,j).border = Border(left=left, right=right, top=top, bottom=bottom)

14、引入边框样式并调用

fill = PatternFill("solid", fgColor="1874CD")sheet.cell(1,j).fill = fill

15、引入填充样式,并调用

import xlrd

from openpyxl import Workbook

from openpyxl import load_workbook

workbook=load_workbook(filename='C:/Users/EDZ/Desktop/工作/2021.08.03/大兄弟.xlsx')

sheet=workbook.active

sheet.insert_cols(idx=1)

sheet.merge_cells(A1:A3)

sheet['A1']=['上海','山东','浙江']

‘叁’ 如何用python3 将一个大的excel文件(.xlsx)分割为多个excel的文件,sheet 不变。以下是我的代码:

python各个读写excel模块的对比如下:
而我使用的是python3.4下的openpyxl和xlsxwriter
读是openpyxl
写是xlsxwriter
对于一般的excel的操作都能实现

‘肆’ Python怎么在Excel中把一个单元格里的内容拆分提取

如果格式都是数字、名称+空格这种模式,可以统一正则出来,('\d、\w+\s)

‘伍’ 用Python拆分EXCEL,一行一个表

EXCEL最多能有256个表吧。若能生成1000个表,也没有使用价值。
想每一行单独打印,可以用WORD的邮件功能。

‘陆’ python处理excel完整版

**1.2.1 新建保存工作簿(覆盖创建)

获取当前活动工作表的:

以索引值方式获取工作表:

以工作表名获取: wb['工作表名'],注意,此表达方式为切片显示,所以没有成员提示。很少用

循环工作表:很好用,一般用sheetnames

获取所有工作表名:wb.sheetnames

获取指定工作表名

修改工作表名称

新建工作表时的默认工作表名:

workbook.remove(工作表)

A1 表示法: 工作表['A1'] ,R1C1 表示法:工作表.cell(行号,列号)

2.工作表['起始行号': '结束行号']或者工作表['起始行号: 结束行号'],此方法是按行读取的数据。

3.工作表['起始列号': '结束列号']或者工作表['起始列号: 结束列号'],
此方法是按列读取的数据。

4.获取(按行)指定工作表所有已用数据:
list(workbook.worksheets[索引值].values)

按行求和(方法 1)

按行求和(方法 )

按列统计平均值

按行获取工作表使用区域数据:worksheet.rows

按列获取工作表使用区域数据:worksheet.columns
获取工作表中最小行号:worksheet.min_row
获取工作表中最小列号:worksheet.min_column
获取工作表中最大行号:worksheet.max_row
获取工作表中最大列号:worksheet.max_column
获取单元格的行号:cell.row
获取单元格的列号:cell.column iter
方法获取指定区域:
1.按行获取指定工作表单元格区域:worksheet.iter_rows(……)
2.按列获取指定工作表单元格区域:worksheet.iter_cols(……)
可以通过 min_row、min_col、max_col、max_row 这几个参数进行单元格区域的控制

A1 表示法:工作表['A1']=值,R1C1 表示法:工作表.cell(行号,列号,值)

在最后一行写入数据:工作表.append(列表)

1.10.2 实例应用(九九乘法表)

最后加一列写优秀

‘柒’ Python 拆分excel表内所有合并单元格

import openpyxl

from openpyxl.styles import  PatternFill

workbook = openpyxl.load_workbook(r'C:\Users\Administrator\Desktop\user_info_format1.xlsx')  # 加载已经存在的excel

name_list = workbook.sheetnames #获取所有的sheet表名

worksheet = workbook[name_list[0]]

fill = PatternFill("solid", fgColor="FF0000") #设置填充样式

m_list = worksheet.merged_cells  # 合并单元格的位置信息,可迭代对象(单个是一个'openpyxl.worksheet.cell_range.CellRange'对象),print后就是excel坐标信息

cr = []

for m_area in m_list:

    # 合并单元格的起始行坐标、终止行坐标。。。。,

    r1, r2, c1, c2 = m_area.min_row, m_area.max_row, m_area.min_col, m_area.max_col

    # 纵向合并单元格的位置信息提取出

    if r2 - r1 > 0 or c2 - c1 > 0:

        cr.append((r1, r2, c1, c2))

        print('符合条件%s' % str(m_area))

#print(cr)

# 这里注意需要把合并单元格的信息提取出再拆分

for r in cr:

    worksheet.unmerge_cells(start_row=r[0], end_row=r[1],

                            start_column=r[2], end_column=r[3])

    if r[3]-r[2]==0:  #单独列合并

        for row  in  (range(r[0], r[1]+1)):

            worksheet.cell(row=row, column=r[3], value=worksheet.cell(r[0], r[2]).value)

            worksheet.cell(row, column=r[3]).fill = fill #将对应拆分单元格填充颜色

    elif  r[1]-r[0]==0 :  #单独行合并

        for column  in  (range(r[2], r[3]+1)):

            worksheet.cell(row=r[1], column=column, value=worksheet.cell(r[0], r[2]).value)

            worksheet.cell(row=r[0], column=column).fill = fill #将对应拆分单元格填充颜色

    else :  #多行、列合并

        for row  in  (range(r[0], r[1]+1)): 

            for column  in  (range(r[2], r[3]+1)):

                worksheet.cell(row, column, value=worksheet.cell(r[0], r[2]).value)

                worksheet.cell(row, column).fill=fill #将对应拆分单元格填充颜色

workbook.save(r'C:\Users\Administrator\Desktop\data25.xlsx') #另存为新表

‘捌’ Python带格式拷贝excel表格(从A拷贝到B)

使用openpyxl包  从表A.xlsx 完全拷贝数据到表B.xlsx   openpyxl这个包不支持xls格式的excel文件

如果A.xlsx中的数据有用到公式自动求和的,在读取A.xlsx中的的数据的时候 需要

load_workbook(A.xlsx,data_only=True)这样加第二个参数  只读取数据否则读出来的就是公式.

下面是重点如果A.xlsx中的表格带有填充颜色 合并单元格字体格式  等等需要如下这样做

myfile = A.xlsx

targFile = B.xlsx

wb = load_workbook(myfile,data_only=True)._sheets #原要拷贝单元格

wb2 = load_workbook(targFile) # 目标单元格

 wr = wb[index]

 ws = wb2._sheets[1]

 # 两个for循环遍历整个excel的单元格内容

for i, row in enumerate(wr.iter_rows()):

      for j, cell in enumerate(row):

               ws.cell(row=i + 1, column=j + 1, value= cell.value) #拷贝数值

               ws.cell(row=i + 1, column=j + 1).number_format=cell.number_format #拷数字格式

               ws.cell(row=i + 1, column=j + 1).alignment = .(cell.alignment) #

               ws.cell(row=i + 1, column=j + 1).font = .(cell.font) #拷贝字体

               ws.cell(row=i + 1, column=j + 1).border = .(cell.border) #拷贝值

              ws.cell(row=i + 1, column=j + 1).fill = .(cell.fill) #拷贝填充颜色

for merg in wr.merged_cells:

         ws.merge_cells(str(merg)) #合并单元格   

wb2.save(targFile)

这样数据就能完美的从从A拷贝到B啦.格式样式完全一样.

但是 也有两个我没有攻克的问题 在这里说一下吧 希望有大佬能解决并告知在下 ,不胜感激

问题一 从表A中拷贝数据到表B以后 如果表B里面也设置了对数据的公式计算,这个时候 如果不打开表B,直接再把表B里面求和的数据 拷贝到表C的话  数值是拷贝不过去的.打开表C会发现没有数值,我查了一些资料 好像是说 表B里面的数 如果是像上面这样拷贝过去然后通过公式直接计算的值 没有保存上.   所以  要想把数值拷贝到C或者读出来的话 ,需要手动打开表B然后,关闭的时候保存一下才可以.这是问题一.   因为我遇到了一个这样的需求,需要连续拷贝从A拷到B,再把B里面求和的数据拷到C.希望有大佬能够指点一下

问题二就比较神奇了

我把表A里面的数据拆分拷贝到了另外五个汇总的表格里面,这五个其中有一个打开以后会报错,显示 excel文件格式错误.这五个表格在拷贝数据以前就已经存在了,那个时候打开都是没有问题的,只有在拷贝完数据以后会报错,我也不清楚具体的原因. 查了一些资料以后知道,excel表格其实是一种特殊的压缩包,只要把后缀改成zip就可以打开这个压缩文件,然后我找到报错的那个文件,然后用这个报错的文件和正常的文件里面这个去做了对比,发现莫名其妙的多了一些东西,删除掉以后再打开就正常了. 这也是我没有解决的问题,希望有大佬能够指点一二 具体的报错 截图 就是文章中附带的截图

‘玖’ 关于Excle表格如何拆分

阅读全文

与python拆分excel表模板相关的资料

热点内容
dvd光盘存储汉子算法 浏览:757
苹果邮件无法连接服务器地址 浏览:963
phpffmpeg转码 浏览:671
长沙好玩的解压项目 浏览:145
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:737
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:485
h3c光纤全工半全工设置命令 浏览:143
公司法pdf下载 浏览:382
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:349
风翼app为什么进不去了 浏览:778
im4java压缩图片 浏览:362
数据查询网站源码 浏览:150
伊克塞尔文档怎么进行加密 浏览:892
app转账是什么 浏览:163