- 论坛徽章:
- 0
|
将数据导出excel- <?php
- /**
- * @author Jceee
- */
- class excel_tool
- {
- public static $readerObj;
- public static $charset = 'utf-8';
-
- /**
- * 输出切换编码
- */
- public static function excelExportIconv($output){
-
- return iconv(self::$charset, 'GBK', $output);
- }
-
- /**
- * 导出文件
- * @param $fileName string
- * @param $title string
- * @param $firstRow array
- * 如:array('name'=>'名字', 'title' => '标题') 键名与后面的数组$data的子元素键名关联
- * @param $data array
- */
- public static function exportFile($fileName, $title = '', $firstRow = array(), $data = array())
- {
- header('Content-Type: application/vnd.ms-execl');
- header('Content-Disposition: attachment; filename=' . $fileName . '.xls');
- header('Pragma: no-cache');
- header('Expires: 0');
-
- if (!empty($title)) {
- echo self::excelExportIconv($title) . "\t\n";
- }
-
- /**
- * 第一行与后面的数据以键名关联
- */
- if (!empty($firstRow) && is_array($firstRow)) {
-
- //输出第一行内容
- foreach ($firstRow as $first) {
- echo self::excelExportIconv($first) . "\t";
- }
- echo "\n";
-
- if (!empty($data) && is_array($data)) {
- foreach ($data as $item) {
- foreach ($firstRow as $_key => $_val) {
- if (isset($item[$_key])) {
- echo self::excelExportIconv($item[$_key]) . "\t";
- } else {
- echo self::excelExportIconv('') . "\t";
- }
- }
- echo "\n";
- }
- }
- } else {
-
- if (!empty($data) && is_array($data)) {
- foreach ($data as $item) {
- foreach ($item as $val) {
- echo self::excelExportIconv($val) . "\t";
- }
- echo "\n";
- }
- echo "\n";
- }
- }
-
- }
- }
-
-
- /**
- * example:
- */
- $fileName = 'example';
- $title = 'This is title';
- $firstRow = array(
- 'id' => 'ID',
- 'name' => '名字',
- 'title' => '标题'
- );
- $data = array(
- array('id' => 1, 'name' => '名字1', 'title' => '标题1'),
- array('id' => 2, 'name' => '名字2', 'title' => '标题2'),
- array('id' => 3, 'name' => '名字3', 'title' => '标题3'),
- array('id' => 4, 'name' => '名字4', 'title' => '标题4'),
- );
- Excel_tool::exportFile($fileName,$title,$firstRow,$data);
- ?>
复制代码 |
|