2009-06-19 9 views
8
私はスプレッドシートとしてテーブルを出力するシンプルなWebベースのPHPアプリケーションを使用しています しかし、私はダウンロードしたスプレッドシートが読み取り専用ファイルとして開き、 Windowsでは)タイプがXLS(HTMLから)に変更されました。ファイルタイプの属性を正しく設定して、単純なセーブでファイルタイプを修正する必要がないようにする方法はありますか? ファイルはセキュリティの性質上、読み取り専用にダウンロードされていますか、これは正常ではありませんか? また、ExcelやOpenOffice(Linuxの場合)でスプレッドシートを開くときに作成される自動ボーダーが気に入らない。私はボーダーの書式を持たない方が好きです。ファイルに追加の書式指定を指定する方法はありますか、それともこれらのアプリケーションに組み込まれていますか?

答えて

8

あなたが話しているExcelのバージョンがわからないので、2007年以降のバージョンを使用しているとします。

拡張機能の変更の問題は、おそらく "Extension Hardening"というOffice機能によって異なります。私の知る限り、唯一の解決策は、HTMLファイルではなく、実際のExcelファイル(例えば、PHPExcelクラスを使用して)を生成することです。

ダウンロードしたファイルは読み取り専用されているセキュリティ上の理由から、彼らはいわゆる「Protected View」で開かれているので、:

ファイル、インターネットからと は、ウイルス、ワームを含むことができ、他の潜在的に危険な場所から、またはその他の種類のマルウェアが含まれており、コンピュータに影響を与えることがあります。 コンピュータを保護するために、これらの の潜在的に危険な場所のファイルが保護されたビューで開かれます。 保護されたビューを使用すると、ファイルが読み取られ、その内容が検査され、 が発生する可能性のあるリスクを低減できます。

最後に、境界線と書式に関する単語です。古いExcel 2000のバージョンでは、HTMLコードのヘッダーセクションにXMLタグを追加するだけで出力をフォーマットできます。詳細と例については "Microsoft Office HTML and XML Reference"を参照してください。しかし、それはかなり古くなっているので、このテクニックはもっと新しいExcelバージョンではまだ動作していないと思います。

生成された出力をより詳細に制御したい場合は、スプレッドシートファイルの作成に単純なHTMLを使用しないでください。

this postには、Excelファイルを書き込むためのPHPExcelの代替手段もあります。

6

AFAIKは、少なくともWindowsでは、リンクをたどったときにブラウザが表示するプロンプトを使って、ユーザーが何をするかによって異なります。

ユーザーがファイルの保存を選択すると、読み取り専用になりません。ユーザーがファイルを開くことを選択した場合、ファイルは一時ディレクトリに保存され、ブラウザはファイルを閉じたときに削除することがあります。私はこの仕組みがどのように機能するのかよくわかりませんが、ロックがあると仮定してファイルを読み込み専用にする場所があります。

0

ローカルに保存したい場合は、属性content-description設定できます。あなたがXLSまたはCSVのようなタブ区切りのテキストや属性content-disposition、 Excelアプリケーションを(印刷する場合

header('Content-Description: File Transfer'); 
header('Content-Type: application/vnd.ms-excel'); 
header("Content-Disposition: attachment; filename=" . $filename . ".xls");  

EDIT

をgnumericやopenofficeのような他のプログラム)はxlsやcsvのように認識します。

関連する問題