Anpassen des Python-Skripts zum Hinzufügen von Daten zur Excel-TabellePython

Python-Programme
Anonymous
 Anpassen des Python-Skripts zum Hinzufügen von Daten zur Excel-Tabelle

Post by Anonymous »

Ich bin ein völliger Python-Neuling und stoße mit dem Kopf gegen die Wand, um mein Problem zu lösen.
Ich habe eine Tabelle in einer Excel-Datei, die ich behalte iCloud Drive zum Verfolgen von Ausgaben, und ich muss diese Datei sowohl in iOS als auch in MacOS verwenden. Bisher habe ich die Kombination aus einer Apple-Verknüpfung, einer zugrunde liegenden CSV-Datei und VBA verwendet, um Spesendaten schnell in Verknüpfungen einzugeben, sie an die CSV-Datei zu übergeben und diese Daten dann regelmäßig automatisch an meine Excel-Datei anzuhängen. (Dieses Anhängen in Excel geschieht nur, wenn ich die Datei auf meinem Mac öffne, da iOS Excel keine Makros unterstützt.)
Jetzt möchte ich die CSV- und VBA-Route überspringen und dies tun ausschließlich mit Verknüpfungen und einem Python-Skript, damit ich die Excel-Datei auch von iOS aus aktualisieren kann. Ich verwende die A-Shell-App, um die Ausführung des Python-Skripts zu erleichtern.
Ich habe das Gefühl, zu 90 % am Ziel zu sein. Trotz verschiedener Optimierungen an meinem Skript (mit freundlicher Genehmigung von ChatGPT) kann ich jedoch kein Skript erstellen, das erfolgreich (1) die Formatierung und Formeln der Tabelle [bei denen es sich im Allgemeinen um strukturierte Verweise handelt] auf die neu hinzugefügte Zeile erweitert; und (2) beschädigt die Excel-Datei dabei nicht.
Hier ist die neueste Version meines Skripts:

Code: Select all

from openpyxl import load_workbook
from openpyxl.utils import get_column_letter
import sys

# Get input data from command-line arguments
input_data = sys.argv[1:]  # Example: ["Value1", "Value2", "Value3"]

# Ensure there are exactly three inputs
if len(input_data) != 3:
print("Error: Please provide exactly three input values.")
sys.exit(1)

# Define the full path to your Excel file
excel_file = "/path_to_my_file/dummy.xlsx"

try:
# Load the workbook and worksheet
wb = load_workbook(excel_file)
ws = wb['Expenses']

# Identify the table range
table_name = 'tbl_expenses'
if table_name not in ws.tables:
print(f"Table '{table_name}' not found in worksheet.")
sys.exit(1)

table = ws.tables[table_name]
start_cell, end_cell = table.ref.split(':')
start_row = ws[start_cell].row
end_row = ws[end_cell].row
end_col = ws[end_cell].column

# Determine the next row index
new_row_idx = end_row + 1

# Insert data starting from the second column (Column B)
for col_index, value in enumerate(input_data, start=2):  # Start at column B
ws.cell(row=new_row_idx, column=col_index, value=value)

# Extend structured reference formulas for remaining columns
for col in range(1, end_col + 1):
source_cell = ws.cell(row=end_row, column=col)
target_cell = ws.cell(row=new_row_idx, column=col)
if source_cell.data_type == 'f':  # If it's a formula
target_cell.value = source_cell.value

# Update the table's range manually
from openpyxl.utils import get_column_letter
new_end_cell = f"{get_column_letter(end_col)}{new_row_idx}"
table.ref = f"{start_cell}:{new_end_cell}"

# Save the workbook
wb.save(excel_file)
print("Row added successfully with extended structured reference formulas.")
except Exception as e:
print(f"An unexpected error occurred: {e}")
Vielen Dank im Voraus für die Hilfe!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post