一般导出excel功能是出现在后台管理系统中,运营人员为了便于统计,经常需要将大量数据导出。
本文主要描述如何将mongodb查询出来的数据写入excel表格。
一、安装相关模块:
1、MongoDB -> 操作数据库
接口文档https://metacpan.org/pod/distribution/MongoDB/lib/MongoDB/Tutorial.pod
2、Spreadsheet::WriteExcel -> 操作excel
接口文档https://metacpan.org/pod/Spreadsheet::WriteExcel
3、Try::Tiny -> try-catch功能
4、Safe::Isa -> try-catch功能
安装方法:
sudo perl -MCPAN -e 'install MongoDB'
sudo perl -MCPAN -e 'install Spreadsheet::WriteExcel'
或者
perl -MCPAN -e shell
cpan[1]> install MongoDB
或者
下载源码包MongoDB-v1.4.5.tar.gz
解压tar xvf MongoDB-v1.4.5.tar.gz,
cd MongoDB-v1.4.5/
perl Makefile.PL
make
make install
二、本文方案
web前端将运营者的输入条件POST给服务端的CGI脚本,CGI脚本解析请求后,根据规则查表,写入excel,同时将excel文件放到可下载的目录,完成后返回下载链接给web前端。
三、代码片段
对于一个后台管理系统,可能会在很多地方需要用到导出excel功能,而且运营者通常需要加入查询/过滤条件,同时只要求返回特定的字段。所以,本文尽量写个通用的版本,以供参考。
#excel.pl - CGI脚本
use warnings;
use utf8;
binmode(STDIN, ':encoding(utf8)');
binmode(STDOUT, ':encoding(utf8)');
binmode(STDERR, ':encoding(utf8)');
==》 以上解决中文问题(要求数据库表里的内容也是utf8格式)
use CGI;
use JSON; #解析web前端的post请求
use Encode; #查询条件可能带中文,需要utf8编码
use MongoDB;
use Try::Tiny;