Форматирование файла excel в csv 'python' c изменением имени исходного файла
Нужна помощь, есть папка где сохраняется файл в формате xls, моя задача переcохранить в формате csv, где разделитель должен быть ";" . Пробовал через такой код
import csv
from datetime import datetime, timedelta
import pandas as pd
df = pd.read_excel(path_file\Number.csv', dtype=str)
df.to_csv(path_file\Number.csv', index = False)
файл пересохраняет в нужном формате без изменения имени файла (
Любой ответ с примером кода будет полезен, заранее благодарю!
Ответы (1 шт):
Автор решения: Exord
→ Ссылка
import csv
from datetime import datetime, timedelta
import pandas as pd
df = pd.read_excel('path_file\Number.xlsx', dtype=str)
df.to_csv(f"path_file\{datetime.now().strftime('%d-%m-%Y')}.xlsx", index=False, sep=';')
Или так:
import xlrd
import csv
def csv_from_excel():
wb = xlrd.open_workbook('Number.xlsx')
sh = wb.sheet_by_name('Sheet1')
your_csv_file = open('another.csv', 'w')
wr = csv.writer(your_csv_file, quoting=csv.QUOTE_ALL)
for rownum in range(sh.nrows):
wr.writerow(sh.row_values(rownum))
your_csv_file.close()
csv_from_excel()
Или можно ещё так:
import openpyxl
import csv
wb = openpyxl.load_workbook('number.xlsx')
sh = wb.active
with open('test.csv', 'w', newline=""):
c = csv.writer(f)
for r in sh.rows:
c.writerow([cell.value for cell in r])
Последние 2 способа лучше, потому что не используется - (pandas) который весит под 100 метров, (и тянет в зависимостях numpy, который весит примерно столько же), что бы сделать такую простую задачу.
А ещё пандас законвертирует вам все нули, так что можно потерять некоторые данные.