この記事では主にPHPを使用して指定したディレクトリにExcelファイルを生成することに関する関連情報を紹介しますので、必要な方は参考にしてください
最近、会社ではPHPを使ってレポートを生成する必要がありました。
Header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachment;filename=test_data.xls");
Baiduで検索したところ、すぐに実装できそうなのですが、ブラウザからダウンロードしたところにこのファイルが生成されます
生成されたファイルを指定したディレクトリに生成したいのですが、実現できますか?
また、写真を挿入できますか?PHPExcelは英語なので、ずっと読んでもわかりませんでした。直接生成した例はありますか?
以下に例を添付します。
?
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
/**
+------------------------------------------------ ---------- * Javaのインポートと同じように、必要なクラスライブラリをインポートします * この機能にはキャッシュ機能があります +------------------------------------------------ ---------- * @param string $class クラス ライブラリ名前空間文字列 * @param string $baseUrl 開始パス * @param string $ext インポートされたファイル拡張子 +------------------------------------------------ ---------- * @return boolen +------------------------------------------------ ---------- */ function import($class, $baseUrl = '', $ext='.class.php') { static $_file = array(); $class = str_replace(array('.', '#'), array('/', '.'), $class); if ('' === $baseUrl && false === strpos($class, '/')) { // エイリアスのインポートを確認する return alias_import($class); } if (isset($_file[$class . $baseUrl])) true を返す; その他 $_file[$class . $baseUrl] = true; $class_strut =explode('/', $class); if (空($baseUrl)) { if ('@' == $class_strut[0] || APP_NAME == $class_strut[0]) { //現在のプロジェクトのアプリケーションライブラリをロードします $baseUrl = ディレクトリ名(LIB_PATH); $class = substr_replace($class,basename(LIB_PATH).'/', 0, strlen($class_strut[0]) + 1); }elseif ('think' == strto lower($class_strut[0])){ // 公式の基本クラス ライブラリを考える $baseUrl = CORE_PATH; $class = substr($class,6); }elseif (in_array(strto lower($class_strut[0]), array('org', 'com'))) { // org サードパーティのパブリック クラス ライブラリ com エンタープライズ パブリック クラス ライブラリ $baseUrl = ライブラリ_パス; }else { // 他のプロジェクト アプリケーション ライブラリをロードします $class = substr_replace($class, '', 0, strlen($class_strut[0]) + 1); $baseUrl = APP_PATH . '../' . $class_strut[0] .'/'; } } if (substr($baseUrl, -1) != '/') $baseUrl .= '/'; $classfile = $baseUrl .$ext; if (!class_exists(basename($class),false)) { //クラスが存在しない場合は、クラスライブラリファイルをインポートします return require_cache($classfile); } }
/** * EXCELテーブルをエクスポート * @param array $data データ、二次元配列、データごとに 1 つのレコード * @param array $title データの各列のフィールド名、一意の配列は、データの順序と一致している必要があります (省略可能) * @param string $filename Excel 名 * @param array $field は、エクスポートされたデータ フィールドを指定する必要があります。並べ替えは、取得されたデータの配列キー値であるタイトルと一致している必要があります。 */関数 exportExcel($data='',$title='',$filename='excel',$field=array()){ if(!$data || !is_array($data)) return false; if($filename=='') $filename='excel'; if($field && is_array($field)){//指定されたフィールドをこの順序でエクスポートするだけです $dateNew=array(); foreach ($data as $k=>$v){ foreach ($field を $fkey){ $dateNew[$k][$fkey]=$v[$fkey]; } } $data=$dateNew; }
import("@.ORG.Util.ExcelXml");//Excel クラスをエクスポートするための呼び出し $xls = new ExcelXml('UTF-8', false, 'Sheet1'); $xls->addArray($data,$title); $xls->generateXML($filename); }
|