2013-07-22 30 views
12

Tôi đang tạo bảng tính bằng cách sử dụng PHPExcel Class. Tôi có một số cột dữ liệu. Tôi đang sử dụng phương pháp tự động hóa để chúng có kích thước của giá trị dữ liệu dài nhất trong mỗi cột.Khi sử dụng PHPExcel, tại sao việc tự động kéo giãn hình ảnh của tôi?

EDIT - Đây là mã đầy đủ của tôi để hiển thị thêm chi tiết:

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; 

Đây là những gì đang xảy ra (Nó chỉ nên được rộng như cột đầu tiên): enter image description here

Tôi đã gỡ bỏ phương pháp autosize và nó có kích thước chính xác, vì vậy tôi biết nó đang ảnh hưởng đến kích thước của hình ảnh.

Tôi làm cách nào để xóa tự động khỏi hình ảnh nhưng để nó được áp dụng cho các cột dữ liệu?

+1

Vui lòng cung cấp chi tiết hơn một chút, ví dụ: Writer nào? Nó giống nhau cho tất cả các nhà văn? Các chi tiết chính xác về vị trí hình ảnh là gì? (bạn đang hiển thị tên, mô tả, đường dẫn và trang tính, nhưng không hiển thị bất kỳ giá trị nào cho tọa độ, chiều cao, chiều rộng, độ lệch, vv) hoặc là các giá trị này được đặt dưới dạng mặc định? –

+4

Thử thêm '$ objDrawing-> setResizeProportional (false);' –

+4

Cảm ơn câu trả lời Mark. Tôi đang sử dụng trình soạn thảo Excel5. Tôi chỉ thử nghiệm nó với Excel2007 và hoạt động tốt. Bạn có bất kỳ ý tưởng tại sao nó sẽ không hoạt động trên Excel5? – zeckdude

Trả lời

2

tôi đã cùng một vấn đề, và tôi đã tìm ra một cách giải quyết khác. Ngay trước khi hiển thị tài liệu, hãy tính toán thủ công, đọc độ rộng đã điều chỉnh của cột và đặt thủ công.

$sheet = $this->phpExcelObject->getActiveSheet(); 
$sheet->calculateColumnWidths(); 
$columnDimension = $sheet->getColumnDimension('B'); 
$columnDimension->setAutoSize(false)->setWidth($columnDimension->getWidth()); 
Các vấn đề liên quan