導航:首頁 > 編程語言 > python帶格式拆分excel表單

python帶格式拆分excel表單

發布時間:2022-09-09 01:03:36

python把excel第一列相同的分類

Python操作excel文件根據某一欄位將相同的類拆分。
需要安裝pandas,xlrd,openpyxl庫。
定義新列需要用到columns.tolist()函數,具體代碼如下:col_name=df.columns.tolistcol_name.insert(新列位置,'新列名稱')wb=df.reindex(columns=col_name)然後後面再接一行代碼用來定義新列的計算規則。

⑵ 關於Excle表格如何拆分

⑶ Python操作Excel實現自動化報表

Python操作Excel實現自動化報表

安裝

python -m pip install xlrd xlwt xlutils。

基本用法

1.從指定文件路徑讀取excel表格,進行一定操作,然後保存到另一個excel文件:result.xlsx

import xlwt
import xlrd
from xlutils. import 
import pandas as pd
from pandas import DataFrame,Series
import os
os.chdir('./')
# 從指定文件路徑讀取excel表格
df = pd.read_excel('D:/mypaper/data/data.xlsx')
# 查看df內容


# 根據age算出出生年份,增加一列
import datetime
import os
year = datetime.datetime.now().year#獲取當前系統時間對應的年份
df['birth'] = year-df['age']
df.to_excel('result.xlsx')#保存到當前工作目錄,可以用os.getcwd()查看
#查看下此時df的內容,可以看到已經生成了birth這一列。


2.單元格操作

# 定義方法:讀取指定目錄下Excel文件某個sheet單元格的值
def excel_read(file_path,table,x,y):
     data = xlrd.open_workbook(file_path)
     table = data.sheet_by_name(table)
     return table.cell(y,x).value

# 定義方法:單元格值及樣式
write_obj_list = []
def concat_obj(cols,rows,value):
    write_obj_list.append({'cols':cols,'rows':rows,'value':value,
'style':xlwt.easyxf('font: name 宋體,height 280;alignment: horiz centre')})

# 定義方法:合並單元格
def merge_unit(srows,erows,scols,ecols,value):
    write_obj_list.append({'id':'merge','srows':srows,'erows':erows,'scols':scols,
'ecols':ecols,'value':value,'style':xlwt.easyxf('font: name 宋體,height 280;alignment: horiz centre')})

# 定義方法:更新excel
excel_update(file_path,write_obj_list,new_path):
    old_excel = xlrd.open_workbook(file_path, formatting_info=True)
    #管道作用
    new_excel = (old_excel)
    '''
    通過get_sheet()獲取的sheet有write()方法
    '''
    sheet1 = new_excel.get_sheet(0)
    '''
    1代表是修改第幾個工作表裡,從0開始算是第一個。此處修改第一個工作表
    '''
    for item in write_obj_list:
        if 'id' not in item.keys():
            if 'style' in item.keys():
                sheet1.write(item['rows'], item['cols'], item['value'],item['style'])
            else:
                sheet1.write(item['rows'], item['cols'], item['value'])
        else:
            if 'style' in item.keys():
                sheet1.write_merge(item['srows'],item['erows'],item['scols'], item['ecols'], item['value'],item['style'])
            else:
                sheet1.write_merge(item['srows'],item['erows'],item['scols'], item['ecols'], item['value'])
    '''
   如果報錯 dict_items has no attributes sort
    把syle源碼中--alist.sort() 修改為----> sorted(alist) 
    一共修改2次
    '''
    new_excel.save(file_path)

#參數詳解
# srows:合並的起始行數
# erows:合並的結束行數
# scols:合並的起始列數
# ecols:合並的結束列數 
# value:合並單元格後的填充值
# style:合並後填充風格:
#     font: name 宋體
#     height 280;
#     alignment: horiz centre
#     ... 與excel操作基本保持一致

(注意:該方法僅僅是將需要直行的動作保存到一個list中,真正的動作還未執行,執行動作是發生在excel_update方法中)

最終調用excel_update方法,傳入每個單元格需要進行的操作和填充值的write_obj_list以及文件保存路徑file_path,就可以在當前工作目錄下生成想要的Excel結果文件。


注意:
1.write_obj_list支持用戶自定義
2.write_obj_list也可以是根據excel_read方法讀取現有待修改的excel文件(可以維持原有表格的格式)而生成

End

⑷ 用Python拆分EXCEL,一行一個表

EXCEL最多能有256個表吧。若能生成1000個表,也沒有使用價值。
想每一行單獨列印,可以用WORD的郵件功能。

⑸ 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就可以打開這個壓縮文件,然後我找到報錯的那個文件,然後用這個報錯的文件和正常的文件裡面這個去做了對比,發現莫名其妙的多了一些東西,刪除掉以後再打開就正常了. 這也是我沒有解決的問題,希望有大佬能夠指點一二 具體的報錯 截圖 就是文章中附帶的截圖

⑹ Python怎麼在Excel中把一個單元格里的內容拆分提取

如果格式都是數字、名稱+空格這種模式,可以統一正則出來,('\d、\w+\s)

⑺ 如何用python3 將一個大的excel文件(.xlsx)分割為多個excel的文件,sheet 不變。以下是我的代碼:

我覺得你要處理數據的話最好用資料庫,把excel中的數據讀入到資料庫中再處理就很輕鬆了。用python本身支持的sqlite就夠了,才800多兆而已。

⑻ 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文件(csv, xls, xlsx)

Excel文件格式主要有csv,xlsx和xlsx,對於不同的格式,我們使用不同的包來進行處理。

其中, encoding='utf-8-sig' 是為了編碼正常可以正確顯示中文, spamreader 中的每一個 row 為list格式,可以循環取出每個單元格的值。

結果:

如果csv文件是數據類的,那麼使用 pandas 包讀寫數據會更方便。

結果:

參數:

結果:

參數:

Excel文件有三層對象:工作薄、工作表和三元格,分別對應 openpyxl 包中的workbook、sheet和cell。

: openpyxl 功能全面,還支持:合並單元格、數學運算、單元格格式、迭代器 ws.iter_rows() 操作等。

: xlrd 打開為只讀模式,不可修改。

結果:

結果:

閱讀全文

與python帶格式拆分excel表單相關的資料

熱點內容
鴻蒙系統怎麼快速換回安卓 瀏覽:710
pdf綠色虛擬列印機 瀏覽:211
androidtab框架 瀏覽:144
java轉php的時間戳 瀏覽:635
編譯libstdc依賴 瀏覽:655
清演算法人與原法人的區別 瀏覽:407
家庭裝修下載什麼app軟體 瀏覽:572
美食博主用什麼app拍視頻 瀏覽:813
ipone手機如何加密微信 瀏覽:355
自來水加密閥閥帽 瀏覽:431
華為交換機dhcp配置命令 瀏覽:316
androidbitmap縮小 瀏覽:272
單片機串口控制燈 瀏覽:85
大訊雲伺服器安裝視頻 瀏覽:786
華為演算法領先世界 瀏覽:654
linux路由重啟 瀏覽:567
php的模板編程 瀏覽:322
編譯器原理與實現書 瀏覽:711
dos選擇命令 瀏覽:19
apm固件編譯到單片機 瀏覽:123