我已经检查过这个 Merging cells in Excel by rows and columns together using PHPExcel但它仅显示行添加,但是我也对列进行了一些测试,但没有一个起作用。
此代码虽然成功创建了 excel 表,但 excel 中的输出抛出错误。
编辑
然而,如果删除 llop 并用简单的术语来说,这是可行的 -
$objPHPExcel->setActiveSheetIndex(0)->mergeCells('A1:B1');
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Swapnesh');
添加数据的主要代码-
// Add some data
echo date('H:i:s') , " Add some data" , EOL;
$i = "A";
$j ="B";
for($num =1; $num <= 5; $num++ )
{
$concat = "{$i}1:{$j}1";
$objPHPExcel->setActiveSheetIndex(0)->mergeCells($concat);
$i++;$j++;
}
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Swapnesh');
我的整个代码-
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />');
date_default_timezone_set('Asia/Calcutta');
/** Include PHPExcel */
require_once 'Classes/PHPExcel.php';
// Create new PHPExcel object
echo date('H:i:s') , " Create new PHPExcel object" , EOL;
$objPHPExcel = new PHPExcel();
// Set document properties
echo date('H:i:s') , " Set document properties" , EOL;
$objPHPExcel->
getProperties()->setCreator("Swapnesh Sinha")
->setLastModifiedBy("Swapnesh")
->setTitle("Office 2007 XLSX Test Document")
->setSubject("Office 2007 XLSX Test Document")
->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
->setKeywords("office 2007 openxml php")
->setCategory("Test result file");
// Add some data
echo date('H:i:s') , " Add some data" , EOL;
$i = "A";
$j ="B";
for($num =1; $num <= 5; $num++ )
{
$concat = "{$i}1:{$j}1";
$objPHPExcel->setActiveSheetIndex(0)->mergeCells($concat);
$i++;$j++;
}
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Swapnesh');
// Rename worksheet
echo date('H:i:s') , " Rename worksheet" , EOL;
$objPHPExcel->getActiveSheet()->setTitle('Student Data');
// Set document security
echo date('H:i:s') , " Set document security" , EOL;
$objPHPExcel->getSecurity()->setLockWindows(true);
$objPHPExcel->getSecurity()->setLockStructure(true);
$objPHPExcel->getSecurity()->setWorkbookPassword("PHPExcel");
// Set sheet security
echo date('H:i:s') , " Set sheet security" , EOL;
$objPHPExcel->getActiveSheet()->getProtection()->setPassword('PHPExcel');
$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); // This should be enabled in order to enable any of the following!
$objPHPExcel->getActiveSheet()->getProtection()->setSort(true);
$objPHPExcel->getActiveSheet()->getProtection()->setInsertRows(true);
$objPHPExcel->getActiveSheet()->getProtection()->setFormatCells(true);
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
// Save Excel 2007 file
echo date('H:i:s') , " Write to Excel2007 format" , EOL;
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
//$objWriter->save(str_replace('.php', '.xlsx', __FILE__));
$filename = "Student-data-sheet".".xlsx";
$objWriter->save($filename);
echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL;
// Echo memory peak usage
echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL;
// Echo done
echo date('H:i:s') , " Done writing file" , EOL;
echo 'File has been created in ' , getcwd() , EOL;
最佳答案
我自己想出了解决方案-
实际上,在列合并的情况下,我们实际上不需要迭代。假设我想从 A1
列合并到 E1
。
因此,无需逐个循环,它可以很容易地通过 -
完成$objPHPExcel->setActiveSheetIndex(0)->mergeCells('A1:E1');
所以在我的例子中,我首先需要找到最后一个元素和第一个元素,然后简单地放入 mergeCells() 方法使其工作。
关于php - 如何使用 PHPExcel 合并 Excel 中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15084517/