web-dev-qa-db-ja.com

クラシックからExcel * .xlsファイルを出力する方法ASP

Excelファイルとして出力する必要がある生成されたHTMLテーブルがいくつかあります。このサイトは従来のASPで記述されています。これは可能ですか?それはどういうわけかOpen Officeライブラリを使用して行うことができますか?


編集:これまでのところ、私はいくつかの提案を試しましたが、失敗したようです。理想的には、ユーザーが.xlsファイルのダウンロードを開始するリンクをクリックできるようにする必要があります。このコード:

<%@ Language=VBScript %>
<%  option explicit

Response.ContentType = "application/vnd.ms-Excel"
Response.AppendHeader "content-disposition", " filename=excelTest.xls"
%>
<table>
    <tr>
        <th>Test Col 1</th>
        <th>Test Col 2</th>
        <th>Test Col 3</th>
        <th colspan="2">Test Col 4</th>
        <th>Test Col 6</th>
        <th>Test Col 7</th>
    </tr>
    <tr>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
    </tr>
</table>

iE7を使用してページを取得すると失敗するようです。 IEは、「excelTest.aspをダウンロードできない」、「要求されたサイトは利用できないか、見つからない」と述べています。

10
cdeszaq

これは、AppendHeaderではなくAddHeaderです。

<%@ Language=VBScript %>
<%  Option Explicit

Response.ContentType = "application/vnd.ms-Excel"
Response.AddHeader "Content-Disposition", "attachment; filename=excelTest.xls"
%>
<table>
    <tr>
        <td>Test</td>
    </tr>
</table>

更新:Excelファイルを生成する方法に関するブログ投稿をASP Classic 。これには、xlsファイルとcsvファイルの両方を生成するのに役立つコードが含まれています。

19

MSはこれを行うためにOffice Web Componentsと呼ばれるCOMライブラリを作成しました。 MSOWC.dllをサーバーに登録する必要があります。 Officeドキュメントファイルを作成および操作できます。

Visual BasicでスプレッドシートWebコンポーネントを使用する方法

Office Webコンポーネントの操作

4
ssorrrell

Response.Buffer = Falseを追加するまで、同じ問題が発生しました。コードを次のように変更してみてください。

Response.Buffer = False Response.ContentType = "application/vnd.ms-Excel" Response.AddHeader "Content-Disposition"、 "attachment; filename = excelTest.xls"

私が今持っている唯一の問題は、Excelがファイルを開くと、次のメッセージが表示されることです。

開こうとしているファイル 'FileName [1] .xls'は、ファイル拡張子で指定されたものとは異なる形式です。ファイルを開く前に、ファイルが破損しておらず、信頼できるソースからのものであることを確認してください。今すぐファイルを開きますか?

ファイルを開くと、データはすべて別の列に表示されますが、スプレッドシートはすべて白で、セル間の境界線はありません。

お役に立てば幸いです。

0
Mark

クライアントによってダウンロード(添付)されるファイルをhttpヘッダーで指定する必要があります。

Response.ContentType = "application/vnd.ms-Excel"
Response.AppendHeader "content-disposition", "attachment: filename=excelTest.xls"

http://classicasp.aspfaq.com/general/how-do-i-Prompt-a-save-as-dialog-for-an-accepted-mime-type.html

0
Espen

HTMLテーブルをXLSドキュメントにいつでもエクスポートできます。 Excelは、HTMLテーブルを理解するのにかなり優れています。

HTMLテーブルをCSVまたはTSVファイルとしてエクスポートすることもできますが、コードでフォーマットを設定する必要があります。これを達成することはそれほど難しくありません。

Microsoft.Office.Interopには、プログラムでExcelファイルを作成できるクラスがいくつかありますが、私は常にそれらが少し不格好であることがわかりました。 .NETバージョンの ここにスプレッドシートを作成 を見つけることができます。これは、クラシックASPの変更がかなり簡単なはずです。

.NETに関しては、私はいつも好きでした CarlosAGのExcel XMLライターライブラリ 。それはあなたがあなたのExcelファイルをセットアップし、XMLスプレッドシートとしてそれを保存することができるようにNiceジェネレータを持っています、そしてそれはすべてのフォーマットとすべてを行うためのコードを生成します。私はそれが古典的なASPではないことを知っていますが、私はそれをそこに捨てると思いました。


上記で試みていることで、ヘッダーを追加してみてください:

"Content-Disposition", "attachment; filename=excelTest.xls"

それが機能するかどうかを確認します。また、私は常にこれをコンテンツタイプに使用します。

  Response.ContentType = "application/octet-stream"
    Response.ContentType = "application/vnd.ms-Excel"
0
Ryan Smith

私が使った「安くて汚い」トリックがあります... shhhh誰にも言わないでください。タブ区切りのテキストを出力し、ファイル名を* .xlsにすると、Excelはそれを異議、質問、警告なしで開きます。したがって、データをタブ区切りのテキストファイルにクランクアウトするだけで、ExcelまたはOpen Officeで開くことができます。

0
JD Long