PHP匯入匯出Excel步驟

來源:互聯網
上載者:User
PHP匯入匯出Excel方法
原作者:冰山上的播客
看到這篇文章的時候,很是驚訝原作者的耐心,雖然我們在平時用的也有一些,但沒有作者列出來的全,寫excel的時候,我用過pear的庫,也用過pack壓包的頭,同樣那些利用smarty等作的簡單替換xml的也用過,csv的就更不用談了。呵呵。(COM方式不講了,這種可讀的太多了,我也寫過利用wps等進行word等的產生之類的文章 )
但是在讀的時候,只用過一種,具體是什麼忘了,要回去翻代碼了。因為採用的是拿來主義,記不住。
原文地址:http://xinsync.xju.edu.cn/index.php/archives/3858
原文內容:

最近因項目需要,需要開發一個模組,把系統中的一些資料匯出成Excel,修改後再導回系統。就趁機對這個研究了一番,下面進行一些總結。
基本上匯出的檔案分為兩種:
1:類Excel格式,這個其實不是傳統意義上的Excel檔案,只是因為Excel的相容能力強,能夠正確開啟而已。修改這種檔案後再儲存,通常會提示你是否要轉換成Excel檔案。
優點:簡單。
缺點:難以產生格式,如果用來匯入需要自己分別編寫相應的程式。
2:Excel格式,與類Excel相對應,這種方法產生的檔案更接近於真正的Excel格式。

如果匯出中文時出現亂碼,可以嘗試將字串轉換成gb2312,
例如下面就把$yourStr從utf-8轉換成了gb2312:
$yourStr = mb_convert_encoding(”gb2312″, “UTF-8″, $yourStr);

下面詳細列舉幾種方法。

一、PHP匯出Excel
1:第一推薦無比風騷的PHPExcel,官方網站: http://www.codeplex.com/PHPExcel
匯入匯出都成,可以匯出office2007格式,同時相容2003。
下載下來的包中有文檔和例子,大家可以自行研究。
抄段例子出來:


PHP代碼
getProperties()->setCreator(”Maarten Balliauw”);   $objPHPExcel->getProperties()->setLastModifiedBy(”Maarten Balliauw”);   $objPHPExcel->getProperties()->setTitle(”Office 2007 XLSX Test Document”);   $objPHPExcel->getProperties()->setSubject(”Office 2007 XLSX Test Document”);   $objPHPExcel->getProperties()->setDescrīption(”Test document for Office 2007 XLSX, generated using PHP classes.”);   $objPHPExcel->getProperties()->setKeywords(”office 2007 openxml php”);   $objPHPExcel->getProperties()->setCategory(”Test result file”);      // Add some data   echo date(’H:i:s’) . ” Add some data\n”;   $objPHPExcel->setActiveSheetIndex(0);   $objPHPExcel->getActiveSheet()->setCellValue(’A1′, ‘Hello’);   $objPHPExcel->getActiveSheet()->setCellValue(’B2′, ‘world!’);   $objPHPExcel->getActiveSheet()->setCellValue(’C1′, ‘Hello’);   $objPHPExcel->getActiveSheet()->setCellValue(’D2′, ‘world!’);      // Rename sheet   echo date(’H:i:s’) . ” Rename sheet\n”;   $objPHPExcel->getActiveSheet()->setTitle(’Simple’);      // 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\n”;   $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);   $objWriter->save(str_replace(’.php’, ‘.xlsx’, __FILE__));      // Echo done   echo date(’H:i:s’) . ” Done writing file.\r\n”; 




2、使用pear的Spreadsheet_Excel_Writer類
下載地址: http://pear.php.net/package/Spreadsheet_Excel_Writer
此類依賴於OLE,下載地址:http://pear.php.net/package/OLE
需要注意的是匯出的Excel檔案格式比較老,修改後儲存會提示是否轉換成更新的格式。
不過可以設定格式,很強大。

send(’test.xls’);      // Creating a worksheet   $worksheet =& $workbook->addWorksheet(’My first worksheet’);      // The actual data   $worksheet->write(0, 0, ‘Name’);   $worksheet->write(0, 1, ‘Age’);   $worksheet->write(1, 0, ‘John Smith’);   $worksheet->write(1, 1, 30);   $worksheet->write(2, 0, ‘Johann Schmidt’);   $worksheet->write(2, 1, 31);   $worksheet->write(3, 0, ‘Juan Herrera’);   $worksheet->write(3, 1, 32);      // Let’s send the file   $workbook->close();   ?> 


3:利用smarty,產生符合Excel規範的XML或HTML檔案
支援格式,非常完美的匯出方案。不過匯出來的的本質上還是XML檔案,如果用來匯入就需要另外處理了。
詳細內容請見rardge大俠的文章:http://bbs.chinaunix.net/viewthread.php?tid=745757

需要注意的是如果匯出的表格行數不確定時,最好在模板中把”ss:ExpandedColumnCount=”5″ ss:ExpandedRowCount=”21″”之類的東西刪掉。

4、利用pack函數列印出類比Excel格式的斷句符號

這種更接近於Excel標準格式,用office2003修改後儲存,還不會彈出提示,推薦用這種方法。
缺點是無格式。

  

不過筆者在64位linux系統中使用時失敗了,斷句符號全部變成了亂碼。

5、使用定位字元、分行符號的方法
定位字元”\t”使用者分割同一行中的列,分行符號”\t\n”可以開啟下一行。
  



6、使用com
如果你的PHP可以開啟com模組,就可以用它來匯出Excel檔案
Application->value}\n” ;   print “Loaded version: {$excel_app->Application->version}\n”;   $Workbook = $excel_app->Workbooks->Open(”$filename”) or Die(”Did not open $filename $Workbook”);   $Worksheet = $Workbook->Worksheets($sheet1);   $Worksheet->activate;   $excel_cell = $Worksheet->Range(”C4″);   $excel_cell->activate;   $excel_result = $excel_cell->value;   print “$excel_result\n”;   $Worksheet = $Workbook->Worksheets($sheet2);   $Worksheet->activate;   $excel_cell = $Worksheet->Range(”C4″);   $excel_cell->activate;   $excel_result = $excel_cell->value;   print “$excel_result\n”;   #To close all instances of excel:   $Workbook->Close;   unset($Worksheet);   unset($Workbook);   $excel_app->Workbooks->Close();   $excel_app->Quit();   unset($excel_app);   ?>   

一個更好的例子: http://blog.chinaunix.net/u/16928/showart_387171.html

一、PHP匯入Excel

1:還是用PHPExcel,官方網站: http://www.codeplex.com/PHPExcel。

2:使用PHP-ExcelReader,下載地址: http://sourceforge.net/projects/phpexcelreader
舉例:


setOutputEncoding(’utf8′);      $data->read(’ jxlrwtest.xls’);      error_reporting(E_ALL ^ E_NOTICE);      for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {   for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {   echo “\”".$data->sheets[0]['cells'][$i][$j].”\”,”;   }   echo “\n”;   }      ?>   

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.