[筆記] export unicode csv

從 db 寫出個 excel 不難,不就開個檔案,把資料寫入嗎?這樣而已。

最近 ascii 與 unicode 的問題也不斷出現,有些東西利用套件抓回來就 error ,這個部分只好先保留,先把我要寫出的檔案轉出來好了。

django 可以自訂在 admin 當中針對資料表要做的功能,放在 table list 下拉選單裡面。

admin.py

遇到 table 中繁體字的欄位,需要 UNICODESTRING.encode('utf-8','ignore') 來轉換一下。
from MYAPP.models import *
from django.contrib import admin
from django.contrib.auth.models import User
import  csv
from django.http import HttpResponse

class MYMODELADMIN(admin.ModelAdmin):
    list_display = ('FIELD1','FIELD2')
    readonly_fields = list_display
    actions = ['GETFILE']
    
    def GETFILE(self, request, queryset):
        response = HttpResponse(mimetype='text/csv')
        response.write('\xEF\xBB\xBF')
        response['Content-Disposition'] = 'attachment; filename="FILENAME.csv"'
        writer = csv.writer(response)
        writer.writerow(['DATA1','DATA2'),'DATA3'])
        for i in queryset:
            writer.writerow([i.DATA1.encode('utf-8','ignore'),i.DATA2.encode('utf-8','ignore'),i.DATA3.encode('utf-8','ignore')])

        return response
    get_winner_file.short_description = u'下載檔案'

readonly 則是在樣板中顯示為唯讀。

選完功能,會自動下載熱騰騰的csv了。

張貼留言

0 留言