我正在使用python包openpyxl將數據寫入excel工作表。我有一個三列的excel文件。我將把數千行數據存入其中。我想要一種風格的特定格式的標題和其他風格的所有數據。我不想迭代所有單元格並專門設置樣式,因爲每當添加更多數據時,我都必須爲它們設置樣式。所以我想要創建一個excel模板,通過爲標題行應用'style1'和爲其餘行應用'style2',所以我不必爲他們的樣式打擾並轉儲數據。無論如何設置預定義預定義所有樣式到表?如何使用openpyxl將excel中的所有單元格格式化爲單一樣式?
回答
提供一個示例,說明如何使用特定格式格式化一行,然後使用其他格式格式化其餘格。
請注意,您將不得不爲我以前工作的樣式調用保存的工作簿。也就是說,在這個例子中,我創建一個工作簿,保存它,然後加載它並格式化單元格,然後再次保存。
您可以在openpyxl docs section on styles中使用不同格式的一堆示例。
這是一個使用pandas_datareader模塊的數據的完全可重複的示例。
import pandas as pd
from openpyxl import Workbook
from openpyxl import load_workbook
from openpyxl.styles import Font
from openpyxl.utils.dataframe import dataframe_to_rows
import pandas_datareader.data as web #optional for example only
#pull in your own dataframe and remove the next two lines if you want to
df = web.DataReader("AMZN", 'google')
df = df.tail(180)
wb = Workbook()
ws = wb.active
for r in dataframe_to_rows(df, index=False, header=True):
ws.append(r)
wb.save("test.xlsx")
wb = load_workbook('test.xlsx')
ws = wb['Sheet']
style_1 = Font(color='0000FF00', bold=True, underline="single", size=15)
style_2 = Font(color='000000FF', italic=True, size=10)
for cell in ws["1:1"]:
cell.font = style_1
for row in ws.iter_rows(min_row=2, max_col=5, max_row=len(df)+2):
for cell in row:
cell.font = style_2
#commented out my original snippet - preferred method recommended by Charlie Clark is ws.iter_rows() - above
'''
for i in range(2, len(df)+2):
current = "%d:%d" % (i, i)
for cell in ws[current]:
cell.font = style_2
'''
wb.save("test.xlsx")
**更新(基於由OP詢問格式附加到現有工作表單元評論):
如果要添加更多的這種表以後,你可以做新細胞同時進行格式化。將以下代碼片段添加到原始答案中。
wb = load_workbook('test.xlsx')
ws = wb['Sheet']
ws['A182'] = "New String"
for cell in ws["182:182"]:
cell.font = style_1
wb.save("test.xlsx")
我會每天向這張表添加數據,所以每次我轉儲數據時,都應該再次爲這些單元應用樣式。很好的解決方法。但是當我創建這個表單並轉儲數據而不再打擾單元格樣式時,我想預先定義所有單元格。可能嗎 ? –
我打算在答案中提供更新,希望能夠解決此評論。 – patrickjlong1
當設計多個單元格時,我建議使用命名樣式。另外,嘗試避免使用'ws ['「%d:%d」%(i,i)]',並使用'ws.iter_rows()'或'ws.iter_cols()'代替。 –
- 1. 使用C#格式化Excel工作表。樣式適用於所有單元格而不是一個單元格
- 2. Excel格式化單元格
- 3. 複製單元格樣式openpyxl
- 4. 格式化Excel中的單元格
- 5. 使用excel將單元格值格式化爲「MMMM」
- 6. 如何通過Roo將excel單元格格式化爲cell_type [:datetime]?
- 7. Vlookup在Excel中格式化單元格
- 8. 使用openpyxl中新單元格的列樣式
- 9. openpyxl中的一個單元格中的多種樣式
- 10. 將Excel單元格中的格式化文本轉換爲HTML
- 11. 使用Microsoft Interop格式化Excel單元
- 12. 在openpyxl中使用Optimized Writer設置單元格格式和樣式
- 13. 如何使用jQuery以excel樣式複製表格單元格?
- 14. 如何使用.NET將Excel中格式化的單元格複製到Word表格單元格中?
- 15. 如何使用Excel的COM API將單元格格式化爲超鏈接?
- 16. 如何在Excel單元格表達式中格式化貨幣?
- 17. 如何格式化除選定的單元格外的所有tableview單元格
- 18. VBA將所有單元格格式化爲文本
- 19. 樣式表格的單元格沒有兒童表格的樣式單元格
- 20. 如何使用PHPExcel_Reader_HTML格式化Excel單元格
- 21. 如何使用PHP格式化Excel Sheet單元格
- 22. 將現有的Excel單元格式化爲不帶日期的時間格式
- 23. Excel格式化單元格條件
- 24. 格式化Excel單元格(貨幣)
- 25. 將openpyxl單元格格式設置爲貨幣
- 26. 如何使用VBA從Excel中的單元格返回所有格式?
- 27. 將'wrap_text'應用到所有使用openpyxl的單元格
- 28. 如何將一個單元格格式複製到該單元格旁邊的所有單元格?
- 29. Excel單元格格式
- 30. 如何使用Excel宏模塊格式化Excel電子表格單元格?
因爲這樣的文件格式的作品風格必須始終被應用到單個細胞。命名樣式提供了將相同樣式應用於多個單元格的最佳方法。 –