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をダウンロードできない」、「要求されたサイトは利用できないか、見つからない」と述べています。
これは、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ファイルの両方を生成するのに役立つコードが含まれています。
MSはこれを行うためにOffice Web Componentsと呼ばれるCOMライブラリを作成しました。 MSOWC.dllをサーバーに登録する必要があります。 Officeドキュメントファイルを作成および操作できます。
Response.Buffer = Falseを追加するまで、同じ問題が発生しました。コードを次のように変更してみてください。
Response.Buffer = False Response.ContentType = "application/vnd.ms-Excel" Response.AddHeader "Content-Disposition"、 "attachment; filename = excelTest.xls"
私が今持っている唯一の問題は、Excelがファイルを開くと、次のメッセージが表示されることです。
開こうとしているファイル 'FileName [1] .xls'は、ファイル拡張子で指定されたものとは異なる形式です。ファイルを開く前に、ファイルが破損しておらず、信頼できるソースからのものであることを確認してください。今すぐファイルを開きますか?
ファイルを開くと、データはすべて別の列に表示されますが、スプレッドシートはすべて白で、セル間の境界線はありません。
お役に立てば幸いです。
クライアントによってダウンロード(添付)されるファイルを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
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"
私が使った「安くて汚い」トリックがあります... shhhh誰にも言わないでください。タブ区切りのテキストを出力し、ファイル名を* .xlsにすると、Excelはそれを異議、質問、警告なしで開きます。したがって、データをタブ区切りのテキストファイルにクランクアウトするだけで、ExcelまたはOpen Officeで開くことができます。