你需要一個庫創建一個實際的Excel文檔,除非直CSV是可以接受的。 CSV將在Excel中作爲電子表格打開,但不能執行任何格式化或公式等高級內容。
我使用圖書館PHPExcel(http://phpexcel.codeplex.com/)。它允許完整的Excel功能,包括圖表和公式。它需要一點時間才能完成,代碼非常冗長。但是,一旦你完成所有設置,它就像一個魅力。
這裏涉及的代碼片段,這是從我實現PHPExcel的。我創建了通過網站的API接收的Paypal付款摘要。我只是爲了讓你瞭解所涉及代碼的數量和性質。正如你所看到的,這都是OO。這只是代碼的第一部分,我設置了列標籤等。它像這樣通過循環來放置數據,然後是頁腳的另一部分。它使一個V E R Y長文件!
// Create new PHPExcel object
$objPHPExcel = new PHPExcel();
// Set properties
$objPHPExcel->getProperties()->setCreator("----- Web Server");
$objPHPExcel->getProperties()->setLastModifiedBy("-----Web Server");
$objPHPExcel->getProperties()->setTitle("Paypal payment reconciliation report");
$objPHPExcel->getProperties()->setSubject("Paypal payment reconciliation report");
$objPHPExcel->getProperties()->setDescription("Paypal payment reconciliation report");
$objPHPExcel->getProperties()->setKeywords("paypal reconcile");
$objPHPExcel->getProperties()->setCategory("Reconciliation report");
// Create a first sheet, representing sales data
$objPHPExcel->setActiveSheetIndex(0);
// format the heading
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Paypal Reconciliation - ran on '.date('m/d/y', time()));
$objPHPExcel->getActiveSheet()->mergeCells('A1:C1');
$objPHPExcel->getActiveSheet()->setCellValue('E1', 'Date Range: '.date('m/d/Y', $oldest_transaction).' to '.date('m/d/Y', $newest_transaction));
$objPHPExcel->getActiveSheet()->mergeCells('E1:J1');
$objPHPExcel->getActiveSheet()->duplicateStyleArray(
array(
'font' => array(
'size' => '12',
'bold' => true
)
),
'A1:I1'
);
// add column labels
$objPHPExcel->getActiveSheet()->setCellValue('A2', '#');
$objPHPExcel->getActiveSheet()->setCellValue('B2', 'Date');
$objPHPExcel->getActiveSheet()->setCellValue('C2', 'Name');
$objPHPExcel->getActiveSheet()->setCellValue('D2', 'Gross');
$objPHPExcel->getActiveSheet()->setCellValue('E2', 'Fee');
$objPHPExcel->getActiveSheet()->setCellValue('F2', 'Net');
$objPHPExcel->getActiveSheet()->setCellValue('G2', 'Balance');
$objPHPExcel->getActiveSheet()->setCellValue('H2', 'Class');
$objPHPExcel->getActiveSheet()->setCellValue('I2', 'Item Title');
$objPHPExcel->getActiveSheet()->setCellValue('J2', '');
$objPHPExcel->getActiveSheet()->setCellValue('K2', '#');
$objPHPExcel->getActiveSheet()->setCellValue('L2', 'Time');
$objPHPExcel->getActiveSheet()->setCellValue('M2', 'Type');
$objPHPExcel->getActiveSheet()->setCellValue('N2', 'Status');
$objPHPExcel->getActiveSheet()->setCellValue('O2', 'Transaction ID');
$objPHPExcel->getActiveSheet()->setCellValue('P2', 'Paypal Receipt ID');
$objPHPExcel->getActiveSheet()->setCellValue('Q2', '--- #');
$objPHPExcel->getActiveSheet()->setCellValue('R2', 'Counterparty');
$objPHPExcel->getActiveSheet()->setCellValue('S2', 'Reference Txn ID');
$objPHPExcel->getActiveSheet()->setCellValue('T2', 'Inv #');
編輯
按要求,這裏是代碼實際輸出Excel文檔我上面創建:
include 'PHPExcel/IOFactory.php';
$file_name = date('m-d-Y', $oldest_transaction).'_THRU_'.date('m-d-Y', $newest_transaction);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('/usr/web/cache/temp/'.$file_name.'.xls');
header ("location:http://www.domain.com/cache/temp/".$file_name.".xls");
我一直在尋找一種方式來做到這一點以及。 @Chris - PHPExcel看起來非常適合創建Excel文檔。但是,我找不到任何有關將輸出保存爲變量或其他格式的信息,然後您可以將它們作爲附件發送到電子郵件。你有沒有碰到過這樣做的方法?謝謝。 – 2011-03-14 22:21:39
當然,我編輯的答案包括我使用的輸出方法。 – 2011-03-15 18:49:19