作者 郭文星

123

... ... @@ -235,5 +235,56 @@ class Department extends Backend
public function downloadexcel($id)
{
$department = Db::name("department")->where('id', $id)->find();
$workinghours=Db::name("workinghours")
->alias("a")
->join("user b","a.user_id=b.id")
->join("project c","a.project_id=c.id")
->where("a.department_id",$id)
->field("project_name,working_hours,reporttime,username")
->select();
$file=$this->projectexcel($workinghours,$department);
}
/**
*导出表
*/
public function projectexcel($workinghours, $department)
{
vendor('phpoffice.phpexcel.PHPExcel');
Vendor('phpoffice.phpexcel.Classes.PHPExcel');
Vendor('phpoffice.phpexcel.Classes.PHPExcel.IOFactory.PHPExcel_IOFactory');
//实例化
$objExcel = new \PHPExcel();
//设置文档属性
$objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
//设置内容
$objActSheet = $objExcel->getActiveSheet();
$key = ord("A");
$letter = explode(',', "A,B,C,D,E,F");
$arrHeader = array('序号', '部门名称', '项目名称', '提交人', '工时', '提交时间');
//填充表头信息
$lenth = count($arrHeader);
for ($i = 0; $i < $lenth; $i++) {
$objActSheet->setCellValue("$letter[$i]1", "$arrHeader[$i]");
};
//填充表格信息
foreach ($workinghours as $k => $v) {
$j = $k + 1;
$k += 2;
$objActSheet->setCellValue('A' . $k, $j);
$objActSheet->setCellValue('B' . $k, $department['name'])->getDefaultColumnDimension()->setWidth(20);
$objActSheet->setCellValue('C' . $k, $v['project_name']);
$objActSheet->setCellValue('D' . $k, $v['username']);
$objActSheet->setCellValue('E' . $k, $v['working_hours']);
$objActSheet->setCellValue('F' . $k, date("Y-m-d", $v['reporttime']));
}
$outfile = $department['name'] ."-". rand(10000, 99999) . ".xlsx";
$objExcel->createSheet();
// Redirect output to a client’s web browser (Excel2007)
$title = date("YmdHis");
header('Content-Disposition: attachment;filename="' . $outfile . '.xlsx"');
$objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
$objWriter->save('php://output');
}
}
... ...
... ... @@ -266,17 +266,12 @@ class Project extends Backend
$j = $k + 1;
$k += 2;
$objActSheet->setCellValue('A' . $k, $j);
$objActSheet->setCellValue('B' . $k, $project['project_name']);
$objActSheet->setCellValue('B' . $k, $project['project_name'])->getDefaultColumnDimension()->setWidth(20);
$objActSheet->setCellValue('C' . $k, $v['username']);
$objActSheet->setCellValue('D' . $k, $v['working_hours']);
$objActSheet->setCellValue('E' . $k, date("Y-m-d", $v['reporttime']));
}
$outfile = $project['project_name'] ."-". rand(10000, 99999) . ".xlsx";
$objWriter->save('./datauploads/' . $outfile);
$file = '../public/datauploads/' . $outfile; // 文件路径
$filename = $outfile; // 下载时的文件名
$objExcel->createSheet();
// Redirect output to a client’s web browser (Excel2007)
$title = date("YmdHis");
... ... @@ -284,26 +279,5 @@ class Project extends Backend
$objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
$objWriter->save('php://output');
}
function download( $file_url , $new_name = '' ){
$file_url='../public/datauploads/'.$file_url;
if (!isset( $file_url )||trim( $file_url )== '' ){
echo '500' ;
}
if (! file_exists ( $file_url )){ //检查文件是否存在
echo '404' ;
}
$file_name = basename ( $file_url );
$file_type = explode ( '.' , $file_url );
$file_type = $file_type [ count ( $file_type )-1];
$file_name =trim( $new_name == '' )? $file_name :urlencode( $new_name );
$file_type = fopen ( $file_url , 'r' ); //打开文件
//输入文件标签
header( "Content-type: application/octet-stream" );
header( "Accept-Ranges: bytes" );
header( "Accept-Length: " . filesize ( $file_url ));
header( "Content-Disposition: attachment; filename=" . $file_name );
//输出文件内容
echo fread ( $file_type , filesize ( $file_url ));
fclose( $file_type );
}
}
... ...
... ... @@ -199,4 +199,59 @@ class User extends Backend
{
return md5(md5($password) . $salt);
}
public function downloadexcel($id)
{
$user = Db::name("user")->where('id', $id)->find();
$workinghours=Db::name("workinghours")
->alias("a")
->join("department b","a.department_id=b.id")
->join("project c","a.project_id=c.id")
->field("project_name,name,working_hours,starttime,reporttime")
->where("a.user_id",$id)
->select();
$file=$this->projectexcel($workinghours,$user);
}
/**
*导出表
*/
public function projectexcel($workinghours, $user)
{
vendor('phpoffice.phpexcel.PHPExcel');
Vendor('phpoffice.phpexcel.Classes.PHPExcel');
Vendor('phpoffice.phpexcel.Classes.PHPExcel.IOFactory.PHPExcel_IOFactory');
//实例化
$objExcel = new \PHPExcel();
//设置文档属性
$objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
//设置内容
$objActSheet = $objExcel->getActiveSheet();
$key = ord("A");
$letter = explode(',', "A,B,C,D,E,F");
$arrHeader = array('序号', '项目名称', '提交人', '部门名称', '工时', '提交时间');
//填充表头信息
$lenth = count($arrHeader);
for ($i = 0; $i < $lenth; $i++) {
$objActSheet->setCellValue("$letter[$i]1", "$arrHeader[$i]");
};
//填充表格信息
foreach ($workinghours as $k => $v) {
$j = $k + 1;
$k += 2;
$objActSheet->setCellValue('A' . $k, $j);
$objActSheet->setCellValue('B' . $k, $v['project_name'])->getDefaultColumnDimension()->setWidth(20);
$objActSheet->setCellValue('D' . $k, $v['name']);
$objActSheet->setCellValue('C' . $k, $user['username']);
$objActSheet->setCellValue('E' . $k, $v['working_hours']);
$objActSheet->setCellValue('F' . $k, date("Y-m-d", $v['reporttime']));
}
$outfile = $user['username'] ."-". rand(10000, 99999) . ".xlsx";
$objExcel->createSheet();
// Redirect output to a client’s web browser (Excel2007)
$title = date("YmdHis");
header('Content-Disposition: attachment;filename="' . $outfile . '.xlsx"');
$objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
$objWriter->save('php://output');
}
}
... ...
... ... @@ -44,7 +44,8 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
}
}
]} ]
]}
]
]
});
... ...
... ... @@ -29,8 +29,20 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
{field: 'mobile', title: __('Mobile'), operate: 'LIKE'},
{field: 'avatar', title: __('Avatar'), events: Table.api.events.image, formatter: Table.api.formatter.image, operate: false},
{field: 'logintime', title: __('Logintime'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true},
{field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
]
{field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate,
buttons: [
{
name:'下载报表',
title: '下载报表',
classname: 'btn btn-xs btn-info btn-click',
icon: 'fa fa-leaf',
// dropdown: '更多',//如果包含dropdown,将会以下拉列表的形式展示
click: function (data,row) {
top.location.href="user/downloadexcel?id="+row.id;
}
}
]} ]
]
});
... ...