使用 php 导出到 xls
Export to xls using php
我想锁定前三列:Student id 、School id 和 Student Name ,这样各自的老师就只能添加在导出文件中获得的分数。我该怎么做?
public function actionStddetails(){
$api = new ApiRequest();
$session = Yii::$app->session;
$url = '/api/student/viewstudent';
$payload = "{'subject_id':'245','esd_id':'2','class_id':'5','qfe_id':'1','exam_id':'3','ref_id':'1','wac':'2','school_id':'2'}";
$url = '/api/examscore/studentlist';
$result = $api->request($url, $payload);
$stddtls = $result->Table1;
$csv_header='';
$csv_header .= 'Student id,'.'School id,'.'Student Name,'.'Marks Obtained,'."\n";
// loop over the rows, outputting them
$csv_row ='';
foreach ($stddtls as $stddtl){
$csv_row .= '"' . $stddtl->stud_id . '",'.'"' . $stddtl->school_id . '",'.'"' . $stddtl->stud_name. '",'."\n";
}
/* Download as CSV File */
header('Content-type: application/csv');
header('Content-Disposition: attachment; filename=toy_csv.csv');
echo $csv_header . $csv_row;
}
无法使用 CSV 文件执行此操作,因为它只是纯文本 - 仅此而已。如果你想对特定字段进行写保护,你必须使用另一种方法。
你可以,例如创建一个 Web 界面,其中只能更改标记的值,其他值只能显示,但不能修改。
它与 this.But 一起使用 xls 文档
public function actionStddetails(){
$api = new ApiRequest();
$session = Yii::$app->session;
$url = '/api/student/viewstudent';
$payload = "{'subject_id':'245','esd_id':'2','class_id':'5',
'qfe_id':'1','exam_id':'3','ref_id':'1',
'wac':'2','school_id':'2'}";
$url = '/api/examscore/studentlist';
$result = $api->request($url, $payload);
$stddtls = $result->Table1;
//var_dump($stddtls);exit;
try {
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
// Initialise the Excel row number
$rowCount = 1;
//start of printing column names as names of MySQL fields
$column = 'A';
$result = ['Student id','School id','Student Name','Marks
Obtained'];
for ($i = 0; $i < count($result); $i++)
{
$objPHPExcel->getActiveSheet()->setCellValue($column.$rowCount,
$result[$i]);
$column++;
}
$rowCount = 2;
//$column = 'A';
foreach ($stddtls as $stddtl)
{
$objPHPExcel->getActiveSheet()->setCellValue('A'.$rowCount,
$stddtl->stud_id);
$objPHPExcel->getActiveSheet()->setCellValue('B'.$rowCount,
$stddtl->school_id);
$objPHPExcel->getActiveSheet()->setCellValue('C'.$rowCount,
$stddtl->stud_name);
$objPHPExcel->getActiveSheet()->setCellValue('D'.$rowCount,
"");
$rowCount++;
}
$count = count($stddtls)+1;
$objSheet = $objPHPExcel->getActiveSheet();
$objSheet->getProtection()->setPassword('hello');
$objSheet->getProtection()->setSheet(true);
$objSheet->getStyle('D1:D'.$count)->getProtection()-
>setLocked(\PHPExcel_Style_Protection::PROTECTION_UNPROTECTED);
$objSheet->getProtection()->setSheet(true);
// Redirect output to a client’s web browser (Excel5)
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="results.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,
'Excel5');
$objWriter->save('php://output');
}
catch(\yii\base\Exception $e){
var_dump($e);
}
}
我想锁定前三列:Student id 、School id 和 Student Name ,这样各自的老师就只能添加在导出文件中获得的分数。我该怎么做?
public function actionStddetails(){
$api = new ApiRequest();
$session = Yii::$app->session;
$url = '/api/student/viewstudent';
$payload = "{'subject_id':'245','esd_id':'2','class_id':'5','qfe_id':'1','exam_id':'3','ref_id':'1','wac':'2','school_id':'2'}";
$url = '/api/examscore/studentlist';
$result = $api->request($url, $payload);
$stddtls = $result->Table1;
$csv_header='';
$csv_header .= 'Student id,'.'School id,'.'Student Name,'.'Marks Obtained,'."\n";
// loop over the rows, outputting them
$csv_row ='';
foreach ($stddtls as $stddtl){
$csv_row .= '"' . $stddtl->stud_id . '",'.'"' . $stddtl->school_id . '",'.'"' . $stddtl->stud_name. '",'."\n";
}
/* Download as CSV File */
header('Content-type: application/csv');
header('Content-Disposition: attachment; filename=toy_csv.csv');
echo $csv_header . $csv_row;
}
无法使用 CSV 文件执行此操作,因为它只是纯文本 - 仅此而已。如果你想对特定字段进行写保护,你必须使用另一种方法。
你可以,例如创建一个 Web 界面,其中只能更改标记的值,其他值只能显示,但不能修改。
它与 this.But 一起使用 xls 文档
public function actionStddetails(){
$api = new ApiRequest();
$session = Yii::$app->session;
$url = '/api/student/viewstudent';
$payload = "{'subject_id':'245','esd_id':'2','class_id':'5',
'qfe_id':'1','exam_id':'3','ref_id':'1',
'wac':'2','school_id':'2'}";
$url = '/api/examscore/studentlist';
$result = $api->request($url, $payload);
$stddtls = $result->Table1;
//var_dump($stddtls);exit;
try {
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
// Initialise the Excel row number
$rowCount = 1;
//start of printing column names as names of MySQL fields
$column = 'A';
$result = ['Student id','School id','Student Name','Marks
Obtained'];
for ($i = 0; $i < count($result); $i++)
{
$objPHPExcel->getActiveSheet()->setCellValue($column.$rowCount,
$result[$i]);
$column++;
}
$rowCount = 2;
//$column = 'A';
foreach ($stddtls as $stddtl)
{
$objPHPExcel->getActiveSheet()->setCellValue('A'.$rowCount,
$stddtl->stud_id);
$objPHPExcel->getActiveSheet()->setCellValue('B'.$rowCount,
$stddtl->school_id);
$objPHPExcel->getActiveSheet()->setCellValue('C'.$rowCount,
$stddtl->stud_name);
$objPHPExcel->getActiveSheet()->setCellValue('D'.$rowCount,
"");
$rowCount++;
}
$count = count($stddtls)+1;
$objSheet = $objPHPExcel->getActiveSheet();
$objSheet->getProtection()->setPassword('hello');
$objSheet->getProtection()->setSheet(true);
$objSheet->getStyle('D1:D'.$count)->getProtection()-
>setLocked(\PHPExcel_Style_Protection::PROTECTION_UNPROTECTED);
$objSheet->getProtection()->setSheet(true);
// Redirect output to a client’s web browser (Excel5)
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="results.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,
'Excel5');
$objWriter->save('php://output');
}
catch(\yii\base\Exception $e){
var_dump($e);
}
}