Вот пример кода конвертера CSV в XLSX с использованием Tkinter для диалоговых окон:
import tkinter as tk
from tkinter import filedialog, messagebox
import csv
from openpyxl import Workbook
def convert_csv_to_xlsx():
# Создаем скрытое основное окно
root = tk.Tk()
root.withdraw()
# Выбор CSV файла
csv_file_path = filedialog.askopenfilename(
title="Выберите CSV файл",
filetypes=[("CSV files", "*.csv"), ("Все файлы", "*.*")]
)
if not csv_file_path:
messagebox.showwarning("Ошибка", "Файл не выбран!")
return
# Выбор места сохранения XLSX
xlsx_file_path = filedialog.asksaveasfilename(
title="Сохранить как XLSX",
defaultextension=".xlsx",
filetypes=[("Excel files", "*.xlsx"), ("Все файлы", "*.*")]
)
if not xlsx_file_path:
messagebox.showwarning("Ошибка", "Путь сохранения не указан!")
return
try:
# Создаем новую книгу Excel
wb = Workbook()
ws = wb.active
# Читаем CSV и записываем в XLSX
with open(csv_file_path, 'r', encoding='utf-8') as csv_file:
csv_reader = csv.reader(csv_file)
for row in csv_reader:
ws.append(row)
# Сохраняем файл
wb.save(xlsx_file_path)
messagebox.showinfo("Успех", f"Файл успешно сохранен как:\n{xlsx_file_path}")
except Exception as e:
messagebox.showerror("Ошибка", f"Произошла ошибка:\n{str(e)}")
if __name__ == "__main__":
convert_csv_to_xlsx()
Для работы этого кода вам понадобятся следующие библиотеки:
— openpyxl (для работы с Excel файлами)
— tkinter (обычно входит в стандартную поставку Python)
Установите необходимые зависимости:
pip install openpyxl
Особенности этого конвертера:
1. Использует стандартные диалоговые окна Windows
2. Поддерживает выбор любого CSV файла
3. Позволяет указать место сохранения и имя для XLSX файла
4. Сохраняет форматирование данных
5. Выводит информационные сообщения об успехе или ошибках
6. Автоматически определяет кодировку UTF-8
Для использования:
1. Запустите скрипт
2. Выберите исходный CSV файл
3. Укажите путь и имя для сохранения XLSX файла
4. Нажмите «Сохранить»
5. Результат будет сохранен в указанную локацию
Примечание: Если ваш CSV файл использует другую кодировку (например, cp1251), измените параметр encoding в строке open(csv_file_path, 'r', encoding='utf-8')
на нужную кодировку.