SacreD
SacreD

Reputation: 373

Write headers to excel file in python

How do you loop through each element in a list and put it as excel header? Let me know if there is a duplicate question. I couldnt find it so far.

row=0
col=0

j = 0
title = ['No.', 'Hue', 'Saturation', 'Value',
         'Lightness', 'AComponent', 'BComponent',
         'Blue Channel', 'Green Channel', 'Red Channel']

for i in title[0:len(title)]:
    worksheet.write(row + 1, col + j, 'title[%i]', bold)
    j += 1

I wanted to do something like the text in red enter image description here

Upvotes: 2

Views: 25967

Answers (2)

Petr Matuska
Petr Matuska

Reputation: 573

You can use Pandas and ExcelWriter module

Create empty DF with columns from your list (i.e. title in your case)

import pandas as pd

title = ['No.', 'Hue', 'Saturation', 'Value',
         'Lightness', 'AComponent', 'BComponent',
         'Blue Channel', 'Green Channel', 'Red Channel']

df = pd.DataFrame(columns = title) #this create your empty data frame

DF TO EXCEL

from pandas import ExcelWriter

writer = ExcelWriter('YourCSV.xlsx')
df.to_excel(writer,'Sheet1')
writer.save() #this create Excel file with your desired titles

DF TO CSV

df.to_csv('YourCSV.csv', sep=',')

Upvotes: 5

cs95
cs95

Reputation: 402243

You seem to have misunderstood two things:

  1. To iterate over the whole loop, no ranges or indices are needed
  2. To substitute some external value into a string, you cannot do what you are doing. Python does not do anything special with the string.

You can use enumerate for the j counter and get rid of a separate counter variable.

for j, t in enumerate(title):
    worksheet.write(row + 1, col + j, t, bold)

Disclaimer: I do not know how to work with xlsxwriter, so as far as the question of writing headers is concerned, this may not be the best way. However, what this answer does is address your errors.

Upvotes: 4

Related Questions