Как преобразовать код для записи данных в xlsx вместо csv, используя python без панд?

Я написал код Python для хранения данных в формате csv, но теперь мне нужно сохранить его в файле .xlsx. как преобразовать приведенный ниже код и записать вывод в файл .xlsx.

  details_file = self.get_local_storage_path() + '/Myfile.xlsx'
  csv_columns = (
        'id', 'name', 'place', 'salary', 'email',
          )

   with open(details_file, 'w') as csvfile:
            writer = csv.DictWriter(
                csvfile, fieldnames=csv_columns, extrasaction='ignore')
            writer.writeheader()
            for data in details:
                writer.writerow(data)
                
                
                
                

# Я пробовал, как показано ниже, но получаю сообщение об ошибке TypeError: аргумент int() должен быть строкой, байтовым объектом или числом, а не 'dict'

with open(details_file, 'w') as csvfile:           
            print("inside open")
            workbook = xlsxwriter.Workbook(csvfile)
            worksheet = workbook.add_worksheet()
            print("before for loop")
            for data in details:
                worksheet.write(data)
            workbook.close()
Потяните за рычаг выброса энергососущих проектов
Потяните за рычаг выброса энергососущих проектов
На этой неделе моя команда отменила проект, над которым я работал. Неделя усилий пошла насмарку.
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а...
Библиотека для работы с мороженым
Библиотека для работы с мороженым
Лично я попрощался с операторами print() в python. Без шуток.
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Привет, люди RPA, это снова я и я несу подарки! В очередном моем приключении о том, как создавать ботов для облегчения рутины. Вот, думаю, стоит...
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
Учебник по веб-скрапингу
Учебник по веб-скрапингу
Привет, ребята... В этот раз мы поговорим о веб-скрейпинге. Целью этого обсуждения будет узнать и понять, что такое веб-скрейпинг, а также узнать, как...
0
0
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я бы использовал панд для этого:

import pandas as pd

# create the dataframe
df = pd.DataFrame(dict(zip(csv_columns, details)))

# save to csv:
df.to_csv(path, index=False)

#save to xlsx:
df.to_excel(path, index=False)

Возможно, вам потребуется установить openpyxl, чтобы последняя строка работала.

Но если вам действительно нужно использовать xlsxwriter для этого, вот как я бы это сделал, основываясь на их туториале :

import xlsxwriter

csv_columns = (
    'id', 'name', 'place', 'salary', 'email',
)
details = [
    [1, 'A', 'B', 2, 'c@d.com'],
    [3, 'C', 'D', 4, 'e@f.com'],
]

workbook = xlsxwriter.Workbook(path)
worksheet = workbook.add_worksheet()

for col, name in enumerate(csv_columns):
    worksheet.write(0, col, name)

for row, det in enumerate(details, 1):
    for col, value in enumerate(det):
        worksheet.write(row, col, value)

workbook.close()

Спасибо, но без панд надо попробовать

Mia 10.01.2023 13:26

Любая помощь без панд?

Mia 11.01.2023 06:22

@Mia Я обновил ответ примером, используя xlsxwriter

Max 12.01.2023 07:57

@Maz, спасибо, но вывод похож на то, что все строки и столбцы заполнены csv_columns, но не деталями. Любая идея о том, как решить эту проблему? пожалуйста

Mia 19.01.2023 06:23

@ Миа, ты пытался скопировать-вставить и запустить мой код, чтобы проверить, работает ли он?

Max 20.01.2023 08:25

Извините, мои данные в другом формате, исправил код, спасибо за вашу помощь!

Mia 20.01.2023 08:29

Другие вопросы по теме