ASPを使用したWeb画面開発における、CSVファイルのダウンロード処理について質問です。


Response.ContentType = "application/octet-stream";
Response.AddHeader "Content-Disposition","attachment; filename=aaaaa.csv"

↑を使用してダウンロードダイアログを表示しクライアントへのダウンロードを行う場合、
ダウンロードダイアログの[開く]を押下(※1)して表示すると、おかしなシート名 ".csv]aaaaa[1]" になってしまいます。
これを避ける事は可能でしょうか?
また、[開く]という選択肢無しでクライアントへのダウンロードに導く方法・アイデアが有りましたらご教授願います。

※1 クライアントPCにExcelが入っており、かつcsvが関連付けられている場合。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2006/09/01 22:41:21
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:tawazou No.1

回答回数33ベストアンサー獲得回数7

ポイント25pt

ファイル名に

 []

を使用していないでしょうか?(正確には ] 。)

EXCEL内部ではシート名は

 [ファイル名]シート名

という形式で管理しているため、ファイル名に[]があるとシート名がおかしくなります。

恐らくこれが関係しているのではないかと思います。


1. [].xlsを作成(中身は空でも良い)

2. [].xlsを開き、シート名を変更

  →シート名がおかしくなります。


また、ダイアログを出さずにEXCELで開くようにするには

http://support.microsoft.com/kb/303475/ja/

をご参照下さい。

id:litetuna

回答有難う御座います。

ファイル名に[]は指定していません。

2006/09/01 22:21:19
id:llusall No.2

回答回数505ベストアンサー獲得回数61

ポイント45pt

参考までに、

エクセルとVBScriptを使用して、

ダイアログ非表示でCSVファイルをダウンロードする方法を紹介します。


※VBScriptを使用しているので、IE限定です。

※Excelを使用しているので、ローカルマシンにExcelが必要です。

※実際にはセキュリティレベルを落とさないと駄目だと思うので、社内イントラ等での利用に限定されるかと思います。


以下の内容をローカルに保存して[ダウンロード]ボタンを押下してみてください。

<html>

<body>

<input type="button" value="ダウンロード" onClick="DownLoad()">

</body>

</html>

<script Language="VBScript">

Option Explicit

Sub DownLoad()

    Dim objExcel

    Const xlCSV = 6

    'エクセルオブジェクトを作成します

    Set objExcel = CreateObject("Excel.Application")

    'エクセル画面を非表示

    objExcel.Visible = True

    '各種の確認ダイアログを非表示

    objExcel.DisplayAlerts = False

    'ワークブックを開きます(■ダウンロードするCSVを設定)

    objExcel.Workbooks.Open "http://xxxx/test.csv"

    'ワークブックの保存(■保存先を設定)

    objExcel.ActiveWorkbook.SaveAs "c:\download.csv", xlCSV

    'エクセルを終了します

    objExcel.Quit

    

    'エクセルオブジェクトの破棄

    Set objExcel = Nothing

    MsgBox "おしまい"

End Sub

</script>


※インターネットやイントラネットのセキュリティーゾーンで使用する場合は、

IEのセキュリティの設定で、

「スクリプトを実行しても安全だとマークされていないActiveXコントロールの初期化とスクリプトの実行」

項目を「ダイアログを表示する」または「有効にする」に設定してください。

id:litetuna

回答有難う御座います。

Excel使用を前提にしてしまうと色々と面倒な様ですね。結局、ダウンロードファイルの拡張子をtxtにし、csvへのリネーム・Excelへの読込をクライアントユーザに委ねる事で落ち着きました。

2006/09/01 22:38:12

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません