Wie kann man Python beschleunigen, um Zellen für eine Excel -Tabelle bedingt hervorzuheben?Python

Python-Programme
Anonymous
 Wie kann man Python beschleunigen, um Zellen für eine Excel -Tabelle bedingt hervorzuheben?

Post by Anonymous »

Ich habe den folgenden Python -Code, der versucht, die Zeilen einer Excel -Tabelle bedingt auf den Werten der Spalten zu färben. Aufgrund der Anzahl der Zeilen ist die Laufzeit bei mehr als 30 Minuten sehr langsam. Ich frage mich, ob es Möglichkeiten gibt, so viel schneller zu machen. Danke. < /P>

Code: Select all

import openpyxl
from openpyxl.styles import PatternFill, Font
import time
import os
from concurrent.futures import ThreadPoolExecutor

# Create sample data
wb = openpyxl.Workbook()
ws = wb.active

# Add headers
headers = ["ID", "Type", "Value"]
for col, header in enumerate(headers, 1):
ws.cell(row=1, column=col, value=header)

# Add 100000 rows of sample data
for row in range(2, 100002):
ws.cell(row=row, column=1, value=row-1)
ws.cell(row=row, column=2, value="Type 1" if row % 3 == 0 else
"Type 2" if row % 3 == 1 else "Type 3")
ws.cell(row=row, column=3, value=f"Value {row-1}")

# Define fills
fills = {
"Type 1": PatternFill(start_color="FFF2CC", end_color="FFF2CC", fill_type="solid"),
"Type 2": PatternFill(start_color="DBEEF4", end_color="DBEEF4", fill_type="solid"),
"Type 3": PatternFill(start_color="FFC0CB", end_color="FFC0CB", fill_type="solid")
}

# Loop approach
start = time.perf_counter()

for row_idx in range(2, ws.max_row + 1):
category = ws.cell(row=row_idx, column=2).value
fill = fills.get(category)

if fill:
for cell in ws[row_idx]:
cell.fill = fill
cell.font = Font(bold=True)

print(f"Run time: {time.perf_counter() - start:.2f} seconds")
wb.save("output.xlsx")

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post