0
def export_csv(request):
    response = HttpResponse(mimetype = 'text/csv')
    response['Content-Disposition'] = 'attachment; filename=exported.csv'
    writer = csv.writer(response)
    data = [['First-Name','Last-name'],['Foo','baar']]
    for entry in data:
            writer.writerow(entry)
    return response

上記のコードは、django から csv ファイルを出力するために書かれています。私が直面している問題は、エクスポート/出力されたファイルのコンテンツが csv ファイル エディターの別のボックスに表示されないことです。データ (リスト) の各エントリについて、同じボックスに出力されるのではなく、各エントリの値 (名、姓) を異なるボックスで解釈する必要があります。

csv ファイルの実際の結果:

|First-Name,Last-Name |
|Foor,bar             |

期待される:

|First-Name |Last-Name |
|Foo        |Baar      |

リストのサイズとその内容に関係なく、ファイルをエクスポートするメカニズムを取得するにはどうすればよいですか?

4

1 に答える 1

1

独自のカスタム区切り文字などを使用して、csv.writer に独自の方言を設定できます。

class dia2(csv.Dialect):
    delimiter = '\t' # delimiter should be only 1-char
    quotechar = '"'
    escapechar = None
    doublequote = True
    skipinitialspace = False
    lineterminator = '\r\n'
    quoting = 1
writer = csv.writer(response, dialect=dia2)
...

さまざまなエディターのさまざまな動作に関する問題の主な原因は、各エディター自体で CSV 区切り文字を実際に使用したものに正しく設定する必要があることです。もう1つの考えられる理由は、各CSV値に引用符を使用していないことです(方言クラスでは引用符= 1です)。期待される出力によると、期待できるもう 1 つのこと - 各フィールドの同じ長さ、残りのスペースを埋める - csv モジュールでは実行できませんでしたが、次を使用して各セルのデータを同じ長さにフォーマットできます次のような標準の python 形式:

data[i] = "%10s" % data[i]
于 2012-11-27T18:44:12.643 に答える