php如何实现数据的导入与导出xml格式的Excel的图文代码分享

黄舟
发布: 2023-03-14 09:36:01
原创
3313 人浏览过

1 简介

1.1 导出

在实际的工作项目中,经常需要将一些重要的数据库中存的数据导出成Excel,比如导出考勤报表,导出财务报表,导出业绩报表,导出销售报表等。CleverCode以前使用了两年的PHPExcel来制作Excel导出数据,但发现用PHPExcel生成Excel实在是太麻烦了,特别是控制单元格的颜色,合并单元格,给单元格设置长度等。这些设计一个Excel通常会需要花费一天的时间。后来CleverCode发现了一个简便的方法PHP导出xml格式的Excel,以前需要一天的工作量,现在半小时就搞定了,实在是事半功倍!

1.2 导入

同时有的项目也需要,将一些Excel数据导入到数据库中。比如银行给的银行流水,销售报表导入的数据库中。这个通常的做法都是使用PHPExcel。

虽然读取xml格式的Excel可以使用Xml parser, SimpleXML, XMLReader, DOMDocument等方式,但是CleverCode尝试过使用这些方式,发现太复杂,太费劲,没有PHPExcel好使。

所以当需要读取Excel的时候(包括xml格式的),CleverCode推荐使用PHPExcel库。

2 需求

某个集团需要各个地区的负责人将其负责的城市站的订单和销售额导入到数据库。
1)网站提供一个导入的销售报表模板。
2)每个负责人只能上传与下载各自负责城市的数据(权限检查)。
3)只用上传生成当年,当日的拥有的所有季度。比如今天是2015-05-26。那么只有生成2015一季度,与二季度。
如果是2015-12-01。则需要生成2015一,二,三,四季度。
4)显示本季度以前季度的数据。
5)本季度的数据默认全是0。
6)只能修改本季度的数据。

3 程序设计源码下载

4 设计网站页面

4.1 显示


4.2 display.php代码

    PHP导入与导出xml格式的Excel  

下载销售报表模板

登录后复制

5 PHP导出xml格式的Excel(导出销售报表模板)

1)新建一个【销售报表.xlsx】。设计如下。



2)将【销售报表.xlsx】文件另存为【销售报表.xml】



3)打开【销售报表.xml】可以看到xml格式的数据。

4)找到table信息。删除掉ss:ExpandedColumnCount="5" ss:ExpandedRowCount="6"。这个限制死了表格的长度和宽度,所以必须去掉。

登录后复制

改成

登录后复制


5 PHP导出Excel业务逻辑代码(Excel.php)

 '北京', 'order_1' => 100, 'money_1' => 10000, 'order_2' => 200, 'money_2' => 40000 ); $infoTJ = array( 'city' => '天津', 'order_1' => 50, 'money_1' => 1000, 'order_2' => 100, 'money_2' => 2000 ); $infoGZ = array( 'city' => '广州', 'order_1' => 50, 'money_1' => 1000, 'order_2' => 100, 'money_2' => 2000 ); // 根据不同用户的权限,获取不同的数据 if (is_admin($userid)) { $data[] = $infoBJ; $data[] = $infoTJ; $data[] = $infoGZ; } else { $data[] = $infoBJ; } return $data; } /** * 通过Smarty方式获取xml字符串 * * @param array $data 结果集 * @return string $xmlStr */ public static function getXmlStrBySmarty($data){ require_once 'Smarty.class.php'; $smarty = new Smarty(); $tpl = 'file/export.tpl'; $smarty->assign('list', $data); // capture the output // 捕获输出 $xml = $smarty->fetch($tpl); return $xml; } /** * 通过PHP组合字符串方式获取xml字符串(可以动态扩展列) * * @param array $data 结果集 * @return string $xmlStr */ public static function getXmlStrByPHP($data){ $xml = '      
'; //可以根据季度的多少动态扩展列,这里不做说明,请自行尝试。 $xml. = ' 城市 2015一季度 2015二季度 订单 销售额 订单 销售额 '; // 输出数据 foreach ( $data as $row ) { $xml .= ' ' . $row['city'] . ' ' . $row['order_1'] . ' ' . $row['money_1'] . ' ' . $row['order_2'] . ' ' . $row['money_2'] . ' '; } $xml .= ' ........... '; return $xml; } }
登录后复制

6 PHP导出Excel客户端代码(export.php)

main(); } start(); ?>
登录后复制

6 PHP导入xml格式的Excel

1)下载销售模板后,填写其中的数据,然后点击页面中的上传按钮,上传Excel数据。


2) PHP导入的Excel业务逻辑代码(Excel.php)。这里使用了PHPExcel库。

getActiveSheet(); // 获取总行 $totalRows = $objWorksheet->getHighestRow(); // 获取总行数 // 获取总列 $highestColumn = $objWorksheet->getHighestColumn(); $totalColumns = PHPExcel_Cell::columnIndexFromString($highestColumn); // 开始行 if (!is_int($startRow) || $startRow < 1) { $startRow = 1; } // 结束行 if ($endRow == null || !is_int($endRow) || $endRow > $totalRows) { $endRow = $totalRows; } // 开始列 if (!is_int($startColumn) || $startColumn < 0) { $startColumn = 0; } // 结束列 if ($endColumn == null || !is_int($endColumn) || $endColumn > $totalColumns) { $endColumn = $totalColumns; } // 读取数据 for($rowNum = $startRow; $rowNum <= $endRow; $rowNum++) { for($colNum = $startColumn; $colNum < $endColumn; $colNum++) { $item = $objWorksheet->getCellByColumnAndRow($colNum, $rowNum); $exValue = trim($item->getValue()); $excelData[$rowNum][$colNum] = $exValue; } } return $excelData; } }
登录后复制


3) PHP导入的Excel客户端代码(import.php)

main(); } start(); ?
登录后复制

以上是php如何实现数据的导入与导出xml格式的Excel的图文代码分享的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!