2010-06-15 36 views
8

我想製作一個導入腳本,它允許用戶將他們的excel文件(擴展名不重要)上傳到我的php應用程序中。在php/mysql中導入帶有圖像的excel文件

應用程序應重新調整項目列表(迄今爲止這麼好)。

在這種情況下的困難是Excel文件包含圖像...

我讀過有關phpexcel庫信息,但它並沒有說明圖片什麼。

有沒有人的想法?

回答

1

PHPExcel不支持圖片,雖然它還不支持圖表

編輯

圖表閱讀器支持爲Excel添加2007+的.xlsx文件1.7.7版本PHPExcel

+0

但是,您如何獲得圖像?! – coderama 2012-03-21 05:42:11

+0

@RD:我也給出了訪問圖片的解決方案。 – 2012-03-21 06:52:06

14

您可以通過PHPExcel library訪問圖像。

導入影像:

$objPHPExcel = PHPExcel_IOFactory::load("MyExcelFile.xls"); 

foreach ($objPHPExcel->getSheetByName("My Sheet")->getDrawingCollection() as $drawing) { 
    if ($drawing instanceof PHPExcel_Worksheet_MemoryDrawing) { 
     ob_start(); 
     call_user_func(
      $drawing->getRenderingFunction(), 
      $drawing->getImageResource() 
     ); 
     $imageContents = ob_get_contents(); 
     ob_end_clean(); 
    } 
} 

然後$ imageContents將包含圖像數據可以輸出或保存爲文件等 你可以看到這樣一個問題:PHPExcel: How to insert an image in the first page header and enlarge it to fit it's content?

對於訪問圖像:

活動工作表中所有圖像對象的ArrayObject將返回N乘:

$objPHPExcel->getActiveSheet()->getDrawingCollection() ; 

將這些對象要麼PHPExcel_Worksheet_DrawingPHPExcel_Worksheet_MemoryDrawing對象:您可以識別使用is_a()其中。然後,您可以使用適合該類的方法(如API中所述)從文件(用於PHPExcel_Worksheet_Drawing對象)或直接從PHPExcel_Worksheet_MemoryDrawing對象本身讀取圖像數據。方法getName()getDescription()可用於從圖像對象檢索相關值。

現在它也可以與打印頭相關聯的圖像對象:

$objPHPExcel->getActiveSheet()->getHeaderFooter()->getImages() 

可以用來檢索頁眉/頁腳圖像。這是一個PHPExcel_Worksheet_HeaderFooterDrawing對象的數組。所有的PHPExcel_Worksheet_Drawing方法都可以用來從這些對象中提取圖像文件。

+0

@RD:你的問題解決了嗎?你沒有給出任何迴應,這就是我評論的原因。 – 2012-03-27 05:58:28

1

使用MySQL命令提示符中的LOAD DATA命令,從Excel(或任何其他可生成文本文件的程序)導入數據非常簡單。

1)保存您的Excel數據作爲csv文件(在Excel 2007中使用另存爲) 使用文本編輯器如記事本,看看它實際上看起來像檢查保存的文件,用什麼,即分隔符等

2)LOAD DATA LOCAL INFILE'C:\ temp \ yourfile.csv'INTO TABLE database。表'''''''''''''''''''''''''field',field2);

3),用於存儲圖像必須使用TO_BASE64

完成!

Reference