使用 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);
        }

     }