DjangoでCSVファイルの出力を行う方法

Django を利用して csv ファイルを出力する方法について解説します。
特に Django であるからといって特別な操作が必要なわけではないですが、 Django であればある程度は簡単に実装することができるので、 Django でやり方について解説いたします。

スポンサーリンク
目次

事前準備について

ここでは各自用意されているプロジェクトやアプリケーションがあると思いますので、プロジェクトやアプリケーションの用意、その他の設定については割愛します。

必要な方がいらっしゃいましたら別の記事で解説いたしますので、そちらをご参照ください。

テンプレートファイルの用意

まずはファイルをダウンロードするためのテンプレートファイルを用意します。
とりあえず最小限の実装にするためにボタンだけ配置します。

views.pyの用意

さてCSVのダウンロード処理を実装するためのクラスをvies.pyに記載していきます。
恐らくここさえわかればいいという人も多いと思いますので、まずはババっとコードをご紹介します。

DjangoでのCSV出力のサンプル

Viewクラスを継承したクラスを使用してそこにダウンロード処理をするための関数を用意します。

重要なポイントをいくつか抜粋します。

CSV出力のためのレスポンスを作成

まずは最初に以下のようにしてCSVを出力するためのレスポンスを作成します。
このレスポンスを返すことでブラウザの方でファイルのダウンロードが返しされます。

#CSV出力用のレスポンスを作成
response = HttpResponse(content_type=’text/csv; charset=Shift-JIS’)

レスポンスに情報を加える

次に作成したレスポンスの詳細にファイル名やエンコードなどの情報などを加えていきます。

#レスポンスに格納
response[‘Content-Disposition’] = ‘attachment; filename*=

<<文字エンコード>>\’\'{}’.format(<<ファイル名>>)

レスポンスから Writer を作成

次にCSVの中にデータを書き込むための変数を作成します。
この変数を利用して実際にデータを書き込んでいきます。

writer = csv.writer(response)

データの書き込み

そして最後に以下のようにしてデータを書き込んでいきます。

writer.writerow(“ファイルに書き込みたい内容”)

ダブルクォーテーションのデータを括る場合

ダブルクォーテーションでデータを括る場合は writer を用意する際に以下のようにして記載します。

writer = csv.writer(response,quotechar='”‘,quoting=csv.QUOTE_NONNUMERIC

引数の quotercharダブルクォーテーションを指定し、quoting に csv ライブラリの QUOTE_NONNUMERIC という定数を指定することでダブルクォーテーションでの出力が可能になります。

なおダブルクォーテーションを文字列として引数に渡す都合上、ダブルクォーテーションはシングルクォーテーションで囲って文字列判定させる必要があります。

いかがでしたでしょうか。
そんなに難しい内容ではないと思うので、戸惑うことはないとは思いますが、わからない点等ございましたらご連絡いただければ幸いです。

今回はここまでです。
お疲れ様でした。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

本業ではPHPを使ったWEBアプリやJavaを使用した基幹アプリを作成しております。Pythonは個人的に勉強しており、E資格を取ったりしたおかげで、業務でAIの研究とかも任されるようになりました。学習のアウトプットのために本サイトを運営しておりますが、これからPythonを学ぶという人のお役に立てればいいなと思います。わからないことや調査して記事にしてほしいことがございましたらご連絡いただけると幸いです。

コメント

コメントする

目次
閉じる