【问题标题】:Export to xls using php使用 php 导出到 xls
【发布时间】:2017-05-16 09:21:56
【问题描述】:

我想锁定前三列:学生 id 、学校 id 和学生姓名,以便各自的老师只能添加在导出文件中获得的分数。我该怎么做?

 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;

}

【问题讨论】:

  • 问题是……?
  • 我想锁定前三列,即学生id,学校id,学生姓名。这样各自的老师只能添加导出文件中获得的分数吗?即只能读取那些列但不能写入其中。顺便说一句qsn很清楚
  • 所以你想让下载的 csv 对几个部分有写保护?
  • 是的前三列
  • 不可能使用 CSV 文件执行此操作,因为它只是纯文本 - 仅此而已。如果您想对特定字段进行写保护,您必须使用另一种方法。你可以例如创建一个 Web 界面,其中只有标记的值可以更改,其他值仅显示,但不可修改。

标签: php csv export


【解决方案1】:

CSV 文件无法做到这一点,因为它只是纯文本 - 不多也不少。如果要对特定字段进行写保护,则必须使用另一种方法。

你可以例如创建一个 Web 界面,其中只有标记的值可以更改,而其他值仅显示,但不可修改。

【讨论】:

    【解决方案2】:

    它适用于此。但适用于 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);
            }
    
         }
    

    【讨论】:

      猜你喜欢
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      相关资源
      最近更新 更多