CGI-BBS > 基本認証 > その他 > 簡易名簿のデータファイルをCSV形式に出来ますか?


カレッヂ
カレッヂ


質問者 あさくら  投稿日 6/4(月) 17:10:53
アクセス制限されたフォルダにて会員の名簿を管理しようと思いますが、現在の簡易名簿ではファイル形式が普通の表計算ソフトでは読み書きできません。
そこで、これをCSV形式で管理したいのですが、どのようにした良いのかわかりません。

どなたか教えていただけたら幸いです。
回答者 かんざき  [削除]  投稿日 6/13(水) 22:03:39
最初に申し上げておきますが、私は「簡易名簿」を使って居らず、使える環境でもありません。

表計算ソフトの使い方の回答になってしまいますが、MS-Excel を使っている前提で。
とりあえず、そのデータファイルを開いてみて(ファイルの種類を「全てのファイル」にして)、各セルごとに区切られていなければ、メニューの [データ] から [区切り位置] を選び、適切な区切り文字を選択してみてください(恐らく「簡易名簿」はタブ区切りでしょう)。
質問者 あさくら  [削除]  投稿日 6/15(金) 11:16:53
ご回答ありがとうございます。

確かにユーザー一人一人のデータファイルはエクセルでも読み込めるのですが、私が試みたいのはメンバー(ユーザー)全員の名簿を一覧表にしてダウンロード出来るようにしたいのです。

良いアイディアがありましたらご指導いただきたく存じます。
回答者 かんざき  [削除]  投稿日 6/16(土) 02:03:16
あさくらさん、こんばんは。

> メンバー(ユーザー)全員の名簿を一覧表にしてダウンロード出来るようにしたいのです。

そうであれば、新たに Perl でプログラムを組まなきゃいけませんね。
電子掲示板用などのスクリプトを改造してみるといけそうかも。
もしくは、Excel で個々のデータをひとまとめにするマクロを組むか。

いずれにせよ、そうも簡単には行かないような気がします。

# つーか、最近会社ではこの手の仕事ばっかり回されるんですけど(^^;
回答者 かんざき  [削除]  投稿日 6/16(土) 20:35:16
自己レスです。試しに私の方で作ってみました。
"list.cgi" を別名でコピー(例: csvlist.cgi)して、本文中の「名簿画面出力」以下を
下記のソースと置き換えてください。これで CSV(カンマ区切り)の出力ができますが、
Excel 上で「区切り位置」の変更をしなければデータベースとして成り立ちません。

#-------------
# 名簿画面出力
#-------------

print "Content-type: application/vnd.ms-excel\n\n";
$YourPath = 'http://簡易名簿を設置したURL/'; # URLはスラッシュで終わらせる

print <<"EOF";
ユーザ名,電子メール,ハンドル,生まれた年,性別,都道府県名,住んでいるところ,仕事が休みになる主な曜日,写真,性格・自己分析,趣味,特技,自己アピール
EOF

foreach $user (@NEW) {

        $i++;

        &Get_Data($user);

        print "$user\,$MEMBER{$user}{'EMAIL'}\,$MEMBER{$user}{'uname'}\,$MEMBER{$user}{'age'}\,$MEMBER{$user}{'sex'}\,$PREFs[$MEMBER{$user}{'PREF'}]\,$MEMBER{$user}{'addr'}\,";

        foreach (split("\0",$MEMBER{$user}{'holiday'})) { print "$_"; }

        if (-e "$USER_DIR$user/photo.jpg") {
                print "\,$YourPath";
                print "image.cgi?$user\,";
        }
        else {
                print "\,\,";
        }

        print "$MEMBER{$user}{'seikaku'}\,";

        foreach (split("\0",$MEMBER{$user}{'hobby'})) { print "$_ "; }

        print "\,$MEMBER{$user}{'tokugi'}\,$MEMBER{$user}{'remarks'}\n";

}

exit;
質問者 あさくら  [削除]  投稿日 6/17(日) 05:10:28
ご親切に、ご丁寧にご回答いただきまして誠にありがとうございます。
かんざきさんの言うようにやりましたら、何とかエクセルで読み込めるようにはなりました。

以前、CGI informationのサイトで「簡易データベース」各種アレンジタイプ3で作ろうと思いましたが、登録するために、あらかじめメールアドレスを入力してパスワードを取得するシステムであるため、アクセス制限してあるフォルダでの運用はユーザID,パスワード等が複雑になりすぎるために断念した経緯があります。http://herz.pobox.ne.jp/cyder/doc/right_top.htm

私はど素人ですのでPerlスクリプトの改造といってもちょっといじくる程度しか出来ませんので、申し訳ないのですが、パソコンへの画面表示は元のままでよいので、(事務局は)現在わかっている会員の名簿情報のアップロードと(会員は)名簿のダウンロードができるようになればと思っています。
回答者 かんざき  [削除]  投稿日 6/17(日) 19:02:51
こんにちは。

> かんざきさんの言うようにやりましたら、何とかエクセルで読み込めるようにはなりました。

 ひとまずは、一覧がダウンロードできるようになりましたか。良かったです。

> (事務局は)現在わかっている会員の名簿情報のアップロード

 このプログラムの性質上、そのように対応しようとすると莫大な手間と時間が掛かってしまいます。というのも、それ専用のプログラムをもう1つ作らなくてはならないからです。こうなると既に私ができる範囲を超えてしまいます。

 ただ、あさくらさんご自身でお作りになるのでしたら、ヒントまではお教えできます。まずは meibo.cgi とsetup.cgi の2つを別名で保存します。(例:meibo2.cgi setup2.cgi)

・meibo2.cgi
「名簿画面出力」のHTML記述欄、「認証ユーザ名」の

<font size=+2 color=#000000><b>$ID</b></font>

部分を、任意の認証ユーザ名が入力できるようにフォーム欄を設けます。

・setup2.cgi
meibo2.cgi から送られた認証ユーザ名をフォルダ名とするように処理します。

 私の方でも試しにやってみたのですが、先述の理由で断念させて頂きます。

> (会員は)名簿のダウンロードができる

 先に教えました、"csvlist.cgi" へのリンクを張ればダウンロードできるはずです。
質問者 あさくら  [削除]  投稿日 6/17(日) 20:48:27
ご丁寧なご返答ありがとうござます。

なんせいつまでたってもCGI初心者な者ですから。やれるかわかりませんが、かんざきさんのおしゃる様に一応トライしてみます。

誠にありがとうございます。

トライの結果をまたアップさせていただきます。

返信(回答)する


Web裏技