title: How to correct the encoding while creating excel file from 'utf-8' data using python
body: <p>I am trying to create an excel file using python from a list of dictionaries. Initially I was getting an error of improper encoding. So I decoded my data to 'utf-8' format. Now after the creation of excel, when I checked the values in each field, their format has been changed to text only. Below are the stpes I used while performing this activity with a snippet of code.</p>
  
  <p>1.>I got error of improper encoding while creating excel file as my data had some 'ascii' values in it. Error snippet: </p>
  
  <pre><code>UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 16: ordinal not in range(128)
  </code></pre>
  
  <p>2.>To remove the error of improper encoding, I inserted a decode() function while reading my input csv file. Snippet of code while decoding to 'utf-8':</p>
  
  <pre><code>data = []
  with open(datafile, "r") as f:
      header = f.readline().split(',')
      counter = 0
      for line in f:
          line = line.decode('utf-8')
  
          fields = line.split(',')
          entry = {}
          for i,value in enumerate(fields):
              entry[header[i].strip()] = value.strip()
          data.append(entry)
          counter += 1
  
  return data
  </code></pre>
  
  <p>3.>After inserting decode() funtion, I created my excel file using below code:</p>
  
  <pre><code>ordered_list= dicts[0].keys() 
  
  wb=Workbook("New File.xlsx")
  ws=wb.add_worksheet("Unique")
  
  first_row=0
  for header in ordered_list:
     col=ordered_list.index(header)
     ws.write(first_row,col,header) 
  
  row=1
  for trans in dicts:
     for _key,_value in trans.items():
         col=ordered_list.index(_key)
         ws.write(row,col,_value)
     row+=1 #enter the next row
  wb.close()
  </code></pre>
  
  <p>But after creation of excel, all the values in each field of excel is coming with text format and not their original format (some datetime values, decimal values etc.). How do I make sure to get that the data format does not change from the input data format I read using input csv file?</p>