Использование DOCX для замены заполнителей для стандартизированного отчетаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Использование DOCX для замены заполнителей для стандартизированного отчета

Сообщение Anonymous »

Это моя первая публикация, поэтому, если я не буду оптимально не стесняюсь давать обратную связь или задавать последующие вопросы. Я пытаюсь изменить отчет проекта на шаблон. Однако не каждый заполнитель работает. Я не верю, что есть скрытые персонажи или что -то в этом роде, потому что я сделал много небольших тестов, таких как копирование одного заполнителя в месте другого, а затем просто изменить 1 на 2 и т. Д. В списке документа и замены. Вторая проблема заключается в том, что ни один из заполнителей на обложке не работает, даже если они работают в других местах. Я не могу разместить ни весь документ, ни фактическую страницу с обложки, будь то, и имена в списке замены. Но вот пример текста, который я пытаюсь заменить: < /p>
Раздел шаблона У меня проблемы с заменой < /p>
Вот то, что я получаю от Запуск кода: < /p>
Результаты - некоторые заполнители работают, а другие не < /p>
Вот документы в публичной папке:
https : //drive.google.com/drive/folders/1ao8_xoudp5lznccytjv3jozymz1krjx7? usp = drive_link
Список замены:

Значения замены

Вот код: < /p>
`from docx import Document
import pandas as pd
import os

def load_data(file_path):
"""Load data from CSV file."""
try:
df = pd.read_csv(file_path)

# Use first two columns regardless of names
if len(df.columns) >= 2:
first_col, second_col = df.columns[0], df.columns[1]

# Clean up the data
df[first_col] = df[first_col].astype(str).str.strip()
df[second_col] = df[second_col].fillna("").astype(str).str.strip()

return dict(zip(df[first_col], df[second_col]))
else:
raise ValueError("CSV file must have at least 2 columns")

except Exception as e:
print(f"Error reading CSV file: {file_path}")
print(f"Error details: {str(e)}")
raise

def replace_placeholders(doc, data):
"""Replace placeholders in document with values from data."""
for paragraph in doc.paragraphs:
for run in paragraph.runs:
for key, value in data.items():
placeholder = f""
if placeholder in run.text:
run.text = run.text.replace(placeholder, str(value))

def generate_report(template_path, output_path, data_path):
"""Generate report from template using data."""
try:
# Remove existing output file if it exists
if os.path.exists(output_path):
os.remove(output_path)
print(f"Removed existing output file: {output_path}")

# Load data and create report
data = load_data(data_path)
print(f"Loaded {len(data)} replacements from CSV")

doc = Document(template_path)
replace_placeholders(doc, data)
doc.save(output_path)
print(f"Report generated: {output_path}")

except Exception as e:
print(f"Error generating report: {str(e)}")
raise

# File paths
template_path = r"C:\xxxxx\Test4.docx"
output_path = r"C:\\xxxxx\\generated_acquisition_report.docx"
data_path = r"C:\\xxxxx\\data2.csv" # Changed to .csv

if __name__ == "__main__":
generate_report(template_path, output_path, data_path) `
< /code>
Я попытался использовать Grok, CHATGPT и Cursor AI, и ничего не сработало ... Я взял пространства, использованные черты, всевозможные вещи, и это не работает. Даже когда я пробую «восстановить» документ проекта и выполнять страницу на странице, ему не нравятся заполнители на первой странице. < /P>
Спасибо за вашу помощь. Я чувствую, что есть что -то простое, что происходит. Я действительно многому научился из поиска вопросов Stack Overflow в прошлом, поэтому я ожидаю, что вы все выясните быстро:-) < /p>
Еще раз спасибо,
larks < / п>

Подробнее здесь: https://stackoverflow.com/questions/794 ... zed-report
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»