導航:首頁 > 編程語言 > 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
蘋果郵件無法連接伺服器地址 瀏覽:962
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:144
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:484
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163