Maintenant, je n'ai pas de problèmes au sujet de la conversion de ce csv ou en le téléchargeant j'ai un problème d'économie à django modèle à filefield L'exemple de code minmized:Convertir CSV pour Excel à l'aide xlsxwriter et enregistrez-le django Modèle
def download_convert_reports_s3_temp():
def get_report_url():
bucket_name = 'temp_bucket'
conn = boto.connect_s3(AWS_ACCESS_KEY_ID,
AWS_SECRET_ACCESS_KEY)
bucket = conn.get_bucket(bucket_name)
key = bucket.get_key('TEMP_2017-01-10.csv')
return key.generate_url(expires_in=600)
def get_doc():
return Doc.objects.get(owner=User.objects.first())
def get_file(file):
file_temp = NamedTemporaryFile(delete=True)
file_temp.write(file.content)
file_temp.flush()
return File(file_temp)
def convert_csv_to_xlsx():
request = requests.get(get_report_url())
csvfile = get_file(request)
from django.conf import settings
excelFile = xlsxwriter.Workbook('report.xlsx', {
'strings_to_numbers': True,
'default_date_format': 'yy/mm/dd',
'tmpdir': settings.MEDIA_ROOT +
'/documents/%s'.format(file.name.rsplit('.')[0] + '.xlsx')
}
excelFile = get_doc().file
worksheet = excelFile.add_worksheet()
worksheet.write('A1', 'data')
worksheet.write('B1', 'data')
worksheet.write('C1', 'data')
worksheet.write('D1', 'data')
worksheet.write('E1', 'data')
# Start from the first cell. Rows and columns are zero indexed.
row = 1
col = 0
with open(csvfile, 'rb') as f:
content = csv.reader(f)
# Iterate over the data and write it out row by row.
for row_data in content:
for data in row_data:
worksheet.write(row, col, data)
col += 1
row += 1
col = 0
f.close()
excelFile.close()
return convert_csv_to_xlsx()
maintenant, le problème que je ne sais vraiment pas enregistrer ce fichier excel pour le doc.file
, et j'ai essayé django fieldfile save
---> 19 read = property(lambda self: self.file. AttributeError: 'Workbook' object has no attribute 'read'
Toute suggestion Merci
Copie possible de [Définir le FileField de Django dans un fichier existant] (http://stackoverflow.com/questions/8332443/set-djangos-filefield-to-an-existing-file) – Bitonator