• ベストアンサー

CSVファイルに出力

Perlを使ってCGIを作っています。 そこで、資料請求フォームを送信した時に、CSV形式で出力するんですけど、ファイル名を現在日時を取ってきて例えば200108.csvみたいに年と月を付けたファイルを作って、出力させたいのですが、どうやって良いのか困ってます。 お教え願えないでしょうか。 よろしくお願いします。

  • CGI
  • 回答数4
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • freesk
  • ベストアンサー率57% (4/7)
回答No.3

miya_777さんの回答に補足: #--ローカルタイムを取得 $yearに年、$monに月が入る ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time); # ただし、$yearはには1900年からカウントした値があるので、 # 年を4桁で表記するには1900を足す必要がある。 $year +=1900; # また$monには0~11の数値が入るので+1する $mon = $mon+1; # $mon++ でも可 # 一桁の月(1~9)を2桁にする 例) 8->08 9->09 $mon = sprintf('%02d',$mon); $file = "$year$mon.csv"; #これで2001年8月の場合は$fileが"200108.csv"になるはずです。

verine
質問者

お礼

サーバを変更しましたら、freeskさんのやり方できちんと作ることができました。 ありがとうございました。

verine
質問者

補足

ご解答ありがとうございます。 上記のようにしてみたのですが、ファイルが作られませんでした。

その他の回答 (3)

  • duckling
  • ベストアンサー率47% (88/185)
回答No.4

ファイルの新規作成の方法がわからない、 ということなのでしょうか? 日付の取得は、下にみなさんが書いておられる方法で バッチリだと思われるので。 下の方が書いている方法で日付を取得して、$date_strに格納し、 $file = "$date_str.csv"; #↓日付と同じファイル名がなかったら、ファイルを作成 if(!open(F,">$file")){open(">>$file");chmod 0666,$file;} これで出来るとは思いますが、 中程に書いてある chmod 0666 は、 ファイルのパーミッションを変更するコマンドですので、 このコマンドが効かないサーバでは、 ファイルを作成できない可能性があります。 (プログラムから新規にファイルを作成することが出来ないサーバもあります。) そうなったら、サーバを変えるしか方法はないと思われます。 ひとまずやってみてはいかがでしょうか。

verine
質問者

お礼

回答ありがとうございます。

  • miya_777
  • ベストアンサー率31% (44/140)
回答No.2

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtimZ(time); とすれば、$yearと$monに年と月が入ります。 これを使えばOKかと。

verine
質問者

お礼

ご解答ありがとうございます。 でも、初心者の私には上記だけではちょっとわからないです。

回答No.1

#!/usr/local/bin/perl $chop($date_str = `date`); $date_str =~ s/ /_g; (適当に date_str を編集) $filename = $date_str . ".cvs"; でどうでしょう?

verine
質問者

お礼

アドバイス有難うございます。 Perl初心者なもので、$date_strを適当に編集というところが、どうしていいのかよくわからないんですけど、アドバイス感謝しております。

関連するQ&A

  • CSVファイルをCGIでダウンロード

    Perlを使ってCGIを書いています。 申し込みフォームを送信すると、CSVファイルに書き込むのとメールで送信するというCGIを作りました。 そこで、その作ったCSVファイルをFTPソフトを使うのではなく、ブラウザ上でCGIを使ってダウンロードしたいのですが、どうしたらよいのでしょう? 環境は OS:Linux、PerlのバージョンはPerl5です。

    • ベストアンサー
    • CGI
  • Access フォーム上でクエリによるcsv出力

    Accessで障害履歴を管理するDBを作っています ・障害内容をフォームより起票して障害履歴テーブルに保存される ・月に一度、前月分の障害をクエリでcsvに抽出 ・抽出する際に発生日時のフィールドを[Like "2021/04/**"]の 抽出条件を入れて指定した月をクエリで抽出しています。 今回悩んでいるところは、毎回クエリのデザインビューを開き 発生日時の抽出条件に[Like "2021/04/**"]を入れて抽出ではなく フォーム上で2021年○月と指定して抽出というボタンを実行すると 自動でcsv出力まで出来るのを目指しています。 ※csv出力する際に指定したファイル名が自動でつけばなお良い イメージとしてはフォーム内にエクスポートというボタンを作り、 それを押すと障害発生日時の○年○月を指定するポップアップが表示され、日付指定して実行すると○月分の障害履歴が指定したファイル名でcsvにエクスポートされる。 またはフォーム内に障害発生日時の○年○月を指定するテキストボックスがあり、日付指定後にエクスポートのボタンを押すと同様にcsv出力されるのを作りたいのですが可能でしょうか?

  • CSVファイルへ出力

    jspとjavaBeansを使用しています。 顧客情報をDBから検索して明細を画面出力し帳票印刷する ために、データをCSVファイルへ出力したいのですが、 どうやってCSVファイルへ出力するのでしょうか? ごく簡単な形式でいいので教えて下さい。

    • ベストアンサー
    • Java
  • csvファイルでの出力について

    C言語初心者です。 プログラミングにおいて質問なのですが、csvファイルを読み込み、 そのデータを用いて計算し、csvファイルで出力するという問題なのですが、C言語においてcsvファイル形式で出力するにはどのような方法がありますか? 補足:ラベル行に全角文字を入力しないといけません。

  • Excel をCSVで出力できません。

    OS/Win7 Excel 2007  Excel表をCSV形式で出力したい。「ファイル名保存」「ファイルの種類―CSV」を指定すると、下記メッセージが出て、CSV形式で出力できません。 「(出力ファイル名.CSV)には互換性のない機能が含まれている可能性があります。」 単にテキストデータとしてなら出力できますが、このテキストファイルからOPEN文で読み込むと 1レコード全体を読み込めません。解決方法を教えてください。 同窓会の宛名書きを今週中にもしなければなりませんので、大変困っています。よろしくお願いします。

  • CSVファイルの出力

    こんにちは。 ただいまアクセスで商品の検索プログラムを作っていまして、入力した商品名に一致する商品コードと商品名をテーブルから抽出し、CSVファイルに出力したいのですが、どういった方法で出力すればいいのでしょうか?

  • MDBファイルをCSV出力したい

    こんばんは。 環境: OS:WINDOWS2000 VB6.0 sp5 アクセス2000 VBからアクセスのMDBデータをCSV形式で出力させようとしています。  mdbファイルが実行中にVBのexeを起動してcsvファイルを取得したいのですが、いい方法が分かりません。 閉じているMDBファイルのデータをCSVで出力することは可能です。  MDBファイルが開いているとexeを実行した時に「実行時エラー7866 データベースが開いています」というようなメッセージが出て処理ができません。 なにかいい方法はないでしょうか よろしくお願いいたします。

  • HTMLフォームをCSV出力させる

    見かけは一般のHTMLフォームなんですが、 送信するとそれがCSV形式でサーバー上にたまる メールフォームを探しています。 フリーで良いものはありませんか?

    • 締切済み
    • CGI
  • VB2005でフォームに取り込んだデータをCSVファイルを出力したい

    VB2005環境、DBはSQLサーバです。 VB2005でフォームに取り込んだデータをCSVファイルで出力する 機能を付けたいと考えています。 現状は、SqlDataAdapterのFillメソッドでDBから取得したデータをWindowsフォーム上に出力する機能を持っています。 その出力したデータをクリック一つでCSVファイルとして出力したい と考えています。 かなり調べたのですが出来ませんでした。 どなたかご教授よろしくお願いします。

  • フォルダ情報をCSV形式に保存できるソフトを探しています。

    多数のフォルダの更新日時と容量をCSV形式で一覧出力してくれるソフトを探しています。 ファイルのサイズと更新日時をCSV形式で出力してくれるソフトは山のようにあるのですが、フォルダの更新日時と容量をCSV形式で同時出力してくれるソフトが見つかりません。 もし知っている方がおられましたらご教授よろしくお願いします。

専門家に質問してみよう