我正在使用PHPExcel Class创建电子表格。我有几列数据。我正在使用autosize方法,以使它们采用每一列中最长的数据值的大小。
编辑-这是我的完整代码,以显示更多详细信息:
require_once '../../Classes/PHPExcel.php';
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
// Adding values for Header Row
$objPHPExcel->getActiveSheet()
->setCellValue('A3', '#')
->setCellValue('B3', 'Name')
->setCellValue('C3', 'Email')
->setCellValue('D3', 'Phone')
->setCellValue('E3', 'Address')
->setCellValue('F3', 'Date Registered');
//Setting column values to the Listers Spreadsheet
$counter = 4;
$entries_num = 1;
//while($listers_export_row = $listers_export_result->fetch_assoc()) {
while($listers_export_row = $listers_export_result->fetch(PDO::FETCH_ASSOC)) {
//Adding Numbers to Listers Spreadsheet (Column A)
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A'.$counter, $entries_num);
//Adding Names to Listers Spreadsheet (Column B)
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$counter, $listers_export_row['first_name'].' '.$listers_export_row['last_name']);
//Adding Email to Listers Spreadsheet (Column C)
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('C'.$counter, $listers_export_row['email']);
//Adding Phone to Listers Spreadsheet (Column D)
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('D'.$counter, '('.$listers_export_row['phone_prefix'].')'.$listers_export_row['phone_first'].'-'.$listers_export_row['phone_last']);
//Adding Address to Listers Spreadsheet (Column E)
$address = $listers_export_row['address'];
if($listers_export_row['apt'] != '') { $address .= ' '.$listers_export_row['apt']; }
$address .= ', '.$listers_export_row['city'].', '.$listers_export_row['state'].' '.$listers_export_row['zip_1'];
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('E'.$counter, $address);
//Adding Date Registered to Listers Spreadsheet (Column F)
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('F'.$counter, date('m/d/y',$listers_export_row['date_created']));
$counter++;
$entries_num++;
}
// Forces the spreadsheet to take the size of the longest value
for ($col = 'A'; $col != 'G'; $col++) { //Runs through all cells between A and E and sets to autosize
$objPHPExcel->getActiveSheet()->getColumnDimension($col)->setAutoSize(true);
}
// Add a drawing to the worksheet
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setResizeProportional(false);
$objDrawing->setName('Logo');
$objDrawing->setDescription('Logo');
$objDrawing->setPath('../images/crl_logo.png');
$objDrawing->setHeight(35);
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
// Redirect output to a client’s web browser (Excel5)
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="Accounts - '.date('m.d.y',time()).'.xls"');
header('Cache-Control: max-age=0');
// If you're serving to IE 9, then the following may be needed
header('Cache-Control: max-age=1');
// If you're serving to IE over SSL, then the following may be needed
header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified
header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
header ('Pragma: public'); // HTTP/1.0
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
这就是正在发生的情况(它的宽度应仅与第一列相同):
我删除了autosize方法,它采用了正确的大小,因此我知道它会影响图像的大小。
如何从图像中删除自动调整大小,但将其应用于数据列?
参考方案
我遇到了同样的问题,并且找到了解决方法。
在呈现文档之前,请手动进行初始化计算,读取调整后的列宽,然后手动进行设置。
$sheet = $this->phpExcelObject->getActiveSheet();
$sheet->calculateColumnWidths();
$columnDimension = $sheet->getColumnDimension('B');
$columnDimension->setAutoSize(false)->setWidth($columnDimension->getWidth());
验证IBAN PHP - php在设计新平台时,我们尝试集成IBAN编号。我们必须确保IBAN已经过验证,并且存储在数据库中的IBAN始终正确。那么验证数字的正确方法是什么? 参考方案 正如我在其他问题中解释的逻辑一样,我尝试自己创建一个函数。根据Wikipedia文章中解释的逻辑,在下面找到合适的功能。国家特定验证。它适合吗http://en.wikipedia.org/wiki/Int…
PHP:对数组排序 - php请如何排序以下数组Array ( 'ben' => 1.0, 'ken' => 2.0, 'sam' => 1.5 ) 至Array ( 'ken' => 2.0, 'sam' => 1.5, 'ben' =&…
PHP strtotime困境 - php有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00…
PHP-全局变量的性能和内存问题 - php假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…
php-casperjs获取内部文本 - php我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…