【问题标题】:PhpExcel creates multiple worksheetsPhpExcel 创建多个工作表
【发布时间】:2013-10-06 20:32:55
【问题描述】:

你好,我正在尝试使用 phpexcel 创建一个 excel 模板

由于某种原因,图像会创建新工作表而不是使用当前工作表。 所以当我打开我创建的 excel 文件时,有 worksheetworksheet1 而不是单个。

    objPHPExcel = new PHPExcel();
            $objWorkSheet = $objPHPExcel->createSheet();            

             // Set the active Excel worksheet to sheet 0 
            $objPHPExcel->setActiveSheetIndex(0);  

            //Taslak Verileri
            $objPHPExcel->getActiveSheet()->SetCellValue('D'.'1', 'Firm'); 
            $objPHPExcel->getActiveSheet()->SetCellValue('J'.'1', 'SFUFORMU - FR.PS.21'); 
            $objPHPExcel->getActiveSheet()->SetCellValue('J'.'3', 'NO:'); 
            $objPHPExcel->getActiveSheet()->SetCellValue('D'.'2', 'Name Surname Signature'); 
            $objPHPExcel->getActiveSheet()->SetCellValue('A'.'4', 'Date');
            $objPHPExcel->getActiveSheet()->SetCellValue('A'.'5', 'Stock No:'); 
            $objPHPExcel->getActiveSheet()->SetCellValue('C'.'5', 'Image'); 
            $objPHPExcel->getActiveSheet()->SetCellValue('E'.'5', 'Image'); 
            $objPHPExcel->getActiveSheet()->SetCellValue('G'.'5', 'Resim'); 
            $objPHPExcel->getActiveSheet()->SetCellValue('I'.'5', 'Image'); 
            $objPHPExcel->getActiveSheet()->SetCellValue('K'.'5', 'Quantity'); 
            $objPHPExcel->getActiveSheet()->SetCellValue('M'.'5', 'Price'); 



            $objDrawing = new PHPExcel_Worksheet_Drawing();
                  $objDrawing->setWorksheet($objWorkSheet);
                  $objDrawing->setName("name");
                  $objDrawing->setDescription("Description");
                  $objDrawing->setPath('temp/3.jpeg');
                  $objDrawing->setCoordinates('F9');
                  $objDrawing->setOffsetX(1);
                  $objDrawing->setOffsetY(5);
            $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); 
            $objWriter->save('some_excel_file.xlsx'); 

【问题讨论】:

    标签: php phpexcel


    【解决方案1】:

    您基本上创建了一个 PHPExcel 对象,该对象已经具有索引为 0 的空工作表。

    然后创建索引为1 的新工作表。

    然后您将所有内容写入索引为0 的工作表,并将图片添加到第二张工作表(新创建的)。

    这应该可以解决您的问题:

    $objPHPExcel->setActiveSheetIndex(1); 
    

    请注意,您仍然会创建一个新工作表,即使第一个工作表已经存在。 如果您想使用现有的工作表,只需执行以下操作:

    删除:

       $objWorkSheet = $objPHPExcel->createSheet();            
       $objPHPExcel->setActiveSheetIndex(0); 
    

    然后用现有的工作表做所有的事情。

    $sheet = $objPHPExcel->getSheet(0);
    $sheet->setCellValue('D'.'1', 'Firm')//Etc all the stuff.
    

    给绘图同一张纸:

    $objDrawing->setWorksheet($sheet);
    

    【讨论】:

    • 刚刚想通了。有没有办法只创建一个?因为有了这段代码,我使用了你提到的第二张纸。
    【解决方案2】:

    我不知道 phpexcel 的规则如何,但在您的上下文中,您使用这种方法创建了两个工作表,因为您调用了两次...

    $objWorkSheet = $objPHPExcel->createSheet();  
    
    $objDrawing->setWorksheet($objWorkSheet);
    

    【讨论】:

      【解决方案3】:

      使用 PHPEXCEL 编写 2 张单个 excel 工作簿

      for ($i=0; $i <2 ; $i++) { 
          $objPHPExcel->getActiveSheet()->setTitle('Worksheet'); //sheetname
          $newsheet = $objPHPExcel->createSheet(); //sheet create
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多