新版ecstore数据csv文件导出流程和二次开发方法
新版ecstore数据csv,xls文件导出流程和二次开发方法
第一步:配置好FTP服务器参数
第二步:用报表中的销售收入统计为例导出销售收入
第三步:在系统菜单中导出队列里下载导出的文件
以上为系统导出和下载的流程,下面来介绍下如何单独使用导出文件和直接下载文件;
下面以一个客户二次开发票款统计为例直接下载文件,实现功能如下图
PHP端开发代码
//连接导出文件上传的服务器
$policyObj = kernel::single('importexport_policy');
$ret = $policyObj->connect();
if ( $ret !== true ){
echo '服务器连接失败';exit;
}
//实例化导出文件类型类
$filetypeObj = kernel::single('importexport_type_csv');
$params['filetype'] = 'csv';
$params['model'] = 'b2c';
$params['key'] = 'salecount'.date("YmdHis",time());
$remote_file_name = $policyObj->create_remote_file($params);
if( !$policyObj->create_local_file() ){
$msg = app::get('importexport')->_('本地文件创建失败,请检查/tmp文件夹权限');
echo $msg;
exit;
}
//加入文件头部数据
$fileHeader = $filetypeObj->fileHeader();
if( $fileHeader )
{
$policyObj->write_local_file($fileHeader);
$policyObj->push();
}
$rs = $filetypeObj->arrToExportType($newDataGroup);
if( !$policyObj->write_local_file($rs) ){
$msg = app::get('importexport')->_('本地写入文件失败,请检查/tmp文件夹权限');
echo $msg;
exit;
}
//本地文件上传到远程
if( !$policyObj->push() ){
$msg = app::get('importexport')->_('文件上传失败');
echo $msg;
exit;
}
//加入文件尾部数据
$fileFoot = $filetypeObj->fileFoot();
if( $fileFoot )
{
$policyObj->write_local_file($fileFoot);
$policyObj->push();
}
$is_forma=true;//文件大小格式化 B kB MB
$file_size = $policyObj->size_local_file($is_forma);
$policyObj->close_local_file();
$filename = $policyObj->create_remote_file($params);
if( !$policyObj->create_local_file() ){
$msg = app::get('importexport')->_('本地文件创建失败,请检查/tmp文件夹权限');
return false;
}
$filetypeObj = kernel::single('importexport_type_'.$params['filetype']);
$size = $policyObj->remote_file_size($filename);
if( $size === 0 )
{
$msg = app::get('importexport')->_('需要下载的文件为空,不需要下载');
return false;
}
if( $size < 0 )
{
$msg = app::get('importexport')->_('需要下载的文件在ftp端不存在,请检查ftp服务器和原始数据');
return false;
}
$range = $filetypeObj->set_queue_header($filename,$size);
if( !$policyObj->pull(array('resume'=>$range),$msg) ){
return false;
}
//实例化导出文件类型类
$file = fopen($policyObj->local_file,"rb");
if( method_exists($filetypeObj, 'setBom') ){
$bom = $filetypeObj->setBom();
echo $bom;
}
while(!feof($file)){
set_time_limit(0);
print_r(fread($file,1024*8));
ob_flush();
flush();
}
$policyObj->close_local_file();
exit;
如有任何疑问都可以直接联系QQ:2392521892来解答。
