2

The following code allows me to save a text file with .xls extension in Python. When I open it, I receive the following warning:

The file you are trying to open, is in a different format than specified by the file extension. Verify that the file is not corrupted and is from a trusted source before opening the file. Do you want to open the file now?

def saveExcel (layer,name):
  # get the path
  pathSave=getDirectoryPath()
  chdir(pathSave)
  filename=name+".xls"
  f=open(filename,"w")
  # Save fields'names
  for field in layer.fields():
    f.write(field.name()+ "\t")
  f.write("\n")
  # Save attributes
  for element in layer.getFeatures():
    for field in layer.fields():
      f.write(str(element.attribute(field.name()))+ "\t")
    f.write("\n")
  f.close()
PolyGeo
  • 65,136
  • 29
  • 109
  • 338
ennine
  • 863
  • 2
  • 10
  • 20
  • check this https://gis.stackexchange.com/questions/212461/writing-in-pre-written-excel-file and https://gis.stackexchange.com/a/174253 – Fran Raga Sep 27 '18 at 10:26
  • 1
    .xls is a binary format. Just because Excel will open CSV text doesn't mean .xls is tab-delimited ASCII. Name your file .txt and you won't get that error. – Vince Sep 27 '18 at 11:45

1 Answers1

7

If you are in QGIS environment you could make a QgsVectorLayer with your data and export that as xlsx:

QgsVectorFileWriter.writeAsVectorFormat(layer, path, "utf-8", layer.crs(), 'xlsx')
Ah4b
  • 196
  • 1
  • 8