feat: Add new 1x1200/35 product configuration to data files and datasheets, including scripts to manage its technical and ampacity values.
All checks were successful
Build & Deploy KLZ Cables / 🔍 Prepare Environment (push) Successful in 7s
Build & Deploy KLZ Cables / 🧪 Quality Assurance (push) Successful in 1m37s
Build & Deploy KLZ Cables / 🏗️ Build Gatekeeper (push) Successful in 21s
Build & Deploy KLZ Cables / 🏗️ Build App (push) Successful in 4m7s
Build & Deploy KLZ Cables / 🚀 Deploy (push) Successful in 44s
Build & Deploy KLZ Cables / ⚡ PageSpeed (push) Successful in 1m18s
Build & Deploy KLZ Cables / 🔔 Notifications (push) Successful in 2s
All checks were successful
Build & Deploy KLZ Cables / 🔍 Prepare Environment (push) Successful in 7s
Build & Deploy KLZ Cables / 🧪 Quality Assurance (push) Successful in 1m37s
Build & Deploy KLZ Cables / 🏗️ Build Gatekeeper (push) Successful in 21s
Build & Deploy KLZ Cables / 🏗️ Build App (push) Successful in 4m7s
Build & Deploy KLZ Cables / 🚀 Deploy (push) Successful in 44s
Build & Deploy KLZ Cables / ⚡ PageSpeed (push) Successful in 1m18s
Build & Deploy KLZ Cables / 🔔 Notifications (push) Successful in 2s
This commit is contained in:
59
scripts/update_ampacity.py
Normal file
59
scripts/update_ampacity.py
Normal file
@@ -0,0 +1,59 @@
|
||||
import openpyxl
|
||||
|
||||
def update_excel_ampacity(file_path, headers_row_idx, ampacity_cols_identifiers, target_cross_section="1x1200/35"):
|
||||
print(f"Updating {file_path}...")
|
||||
wb = openpyxl.load_workbook(file_path)
|
||||
ws = wb.active
|
||||
|
||||
# openpyxl is 1-indexed for rows and columns
|
||||
headers = [cell.value for cell in ws[headers_row_idx]]
|
||||
|
||||
# Identify column indices for ampacity (0-indexed locally for easier row access)
|
||||
col_indices = []
|
||||
for identifier in ampacity_cols_identifiers:
|
||||
if isinstance(identifier, int):
|
||||
col_indices.append(identifier)
|
||||
else:
|
||||
try:
|
||||
# list.index returns 0-indexed position
|
||||
col_indices.append(headers.index(identifier))
|
||||
except ValueError:
|
||||
print(f"Warning: Could not find column '{identifier}' in {file_path}")
|
||||
|
||||
# Find row index for "Number of cores and cross-section" or use index 8
|
||||
cs_col_idx = 8
|
||||
try:
|
||||
cs_col_idx = headers.index("Number of cores and cross-section")
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
rows_updated = 0
|
||||
# ws.iter_rows returns 1-indexed rows
|
||||
for row in ws.iter_rows(min_row=headers_row_idx + 1):
|
||||
# row is a tuple of cells, so row[cs_col_idx] is 0-indexed access to the tuple
|
||||
if str(row[cs_col_idx].value).strip() == target_cross_section:
|
||||
for col_idx in col_indices:
|
||||
row[col_idx].value = "On Request"
|
||||
rows_updated += 1
|
||||
|
||||
wb.save(file_path)
|
||||
print(f"Updated {rows_updated} rows in {file_path}")
|
||||
|
||||
# File 1: medium-voltage-KM.xlsx
|
||||
update_excel_ampacity(
|
||||
'data/excel/medium-voltage-KM.xlsx',
|
||||
1, # Headers are in first row (1-indexed)
|
||||
[
|
||||
'Current ratings in air, trefoil*',
|
||||
'Current ratings in air, flat*',
|
||||
'Current ratings in ground, trefoil*',
|
||||
'Current ratings in ground, flat*'
|
||||
]
|
||||
)
|
||||
|
||||
# File 2: medium-voltage-KM 170126.xlsx
|
||||
update_excel_ampacity(
|
||||
'data/excel/medium-voltage-KM 170126.xlsx',
|
||||
1, # Indices 39 and 41 were from a 0-indexed JSON representation
|
||||
[39, 41]
|
||||
)
|
||||
Reference in New Issue
Block a user