1

こんにちは、utf-8 エンコーディングを使用して mysql db から生成されたクエリセットの csv ファイルを返す単純なビューがあります。

def export_csv(request):
    ...
    response = HttpResponse(mimetype='text/csv')
    response['Content-Disposition'] = 'attachment; filename=search_results.csv'
    writer = csv.writer(response, dialect=csv.excel)             
    for item in query_set:
        writer.writerow(smart_str(item))  
    return response 
    return render(request, 'search_results.html', context)

これは CSV ファイルとして正常に機能し、テキスト エディター、LibreOffice などで問題なく開くことができます。

ただし、Windows の MS Excel でエラーなく開くことができるファイルを提供する必要があります。「Española」などのクエリセットにラテン文字を含む文字列がある場合、Excel の出力は「Española」です。

このブログ投稿を試しましたが、役に立ちませんでした。xlwt パッケージについても知っていますが、現在持っている CSV メソッドを使用して出力を修正する方法があるかどうか知りたいです。

どんな助けでも大歓迎です。

4

3 に答える 3

0

すべてのバージョンのExcelに統一されたソリューションがあるわけではないようです。

  1. 最善の策はopenpyxlを使用することですが、これはかなり複雑であり、Excelユーザーのダウンロードを個別に処理する必要があります。これは最適ではありません。

  2. ファイルの先頭(0xEF、0xBB、0xBF)にバイト順マークを追加してみてください。microsoft-excel-mangles-diacritics-in-csv-filesを参照してください

別の同様の投稿があります。

于 2012-05-27T17:01:08.127 に答える
0

あなたはやってみるかもしれませんpython-unicodecsvcsvこれは、 Unicode を適切に処理しないpython モジュールを置き換えます。

  1. unicodecsv フォルダーをどこかに置き、setup.py 経由でインポートまたはインストールできます。
  2. ビューファイルにインポートします。例:

    import unicodecsv as csv
    
于 2012-05-29T09:39:46.263 に答える