2013-03-25 80 views
0

我正在使用PHPExcel庫做一些工作。我今天遇到了第一個問題。從Excel中讀取/寫入的工作很好,但之後我將開始從Excel工作表中取出東西,然後進入Mongo。我基本上從Excel中讀取數組,然後嘗試將該數組保存到Mongo中$collection->insert($array);從PHPExcel獲取文本而不是RTF /對象閱讀

我得到一個異常,告訴我它不能插入帶有零字符鍵的任何東西。我在我的陣列上做了一個var_dum(),看看它在哪裏得到一個空白鍵,這是轉儲產生的。

array(10) 
{ 
    ["um"]=> string(2) "EA" 
    ["desc"]=> string(37) "FRAME WELDMENT, NITRATE REMOVAL TANKS" 
    ["vws_num"]=> NULL 
    ["part_num"]=> string(10) "SD-0408-01" 
    ["manufac"]=> object(PHPExcel_RichText)#665 (1) 
    { 
     ["_richTextElements" : "PHPExcel_RichText" : private]=> array(3) 
     { 
      [0]=> object(PHPExcel_RichText_TextElement)#184 (1) 
      { 
       ["_text":"PHPExcel_RichText_TextElement":private]=> string(23) "VEOLIA WATER SOLUTIONS " 
      } 
      [1]=> object(PHPExcel_RichText_Run)#179 (2) 
      { 
       ["_font":"PHPExcel_RichText_Run":private]=> object(PHPExcel_Style_Font)#183 (12) 
       { 
        ["_name":"PHPExcel_Style_Font":private]=> string(5) "SWGDT" 
        ["_size":"PHPExcel_Style_Font":private]=> string(2) "10" 
        ["_bold":"PHPExcel_Style_Font":private]=> bool(false) 
        ["_italic":"PHPExcel_Style_Font":private]=> bool(false) 
        ["_superScript":"PHPExcel_Style_Font":private]=> bool(false) 
        ["_subScript":"PHPExcel_Style_Font":private]=> bool(false) 
        ["_underline":"PHPExcel_Style_Font":private]=> string(4) "none" 
        ["_strikethrough":"PHPExcel_Style_Font":private]=> bool(false) 
        ["_color":"PHPExcel_Style_Font":private]=> object(PHPExcel_Style_Color)#186 (4) 
        { 
         ["_argb":"PHPExcel_Style_Color":private]=> string(8) "FF000000" 
         ["_isSupervisor":"PHPExcel_Style_Color":private]=> bool(false) 
         ["_parent":"PHPExcel_Style_Color":private]=> NULL 
         ["_parentPropertyName":"PHPExcel_Style_Color":private]=> NULL 
        } 
        ["_parentPropertyName":"PHPExcel_Style_Font":private]=> NULL 
        ["_isSupervisor":"PHPExcel_Style_Font":private]=> bool(false) 
        ["_parent":"PHPExcel_Style_Font":private]=> NULL 
       } 
       ["_text":"PHPExcel_RichText_TextElement":private]=> string(1) " " 
      } 
      [2]=> object(PHPExcel_RichText_Run)#182 (2) 
      { 
       ["_font":"PHPExcel_RichText_Run":private]=> object(PHPExcel_Style_Font)#189 (12) 
       { 
        ["_name":"PHPExcel_Style_Font":private]=> string(14) "Century Gothic" 
        ["_size":"PHPExcel_Style_Font":private]=> string(2) "10" 
        ["_bold":"PHPExcel_Style_Font":private]=> bool(false) 
        ["_italic":"PHPExcel_Style_Font":private]=> bool(false) 
        ["_superScript":"PHPExcel_Style_Font":private]=> bool(false) 
        ["_subScript":"PHPExcel_Style_Font":private]=> bool(false) 
        ["_underline":"PHPExcel_Style_Font":private]=> string(4) "none" 
        ["_strikethrough":"PHPExcel_Style_Font":private]=> bool(false) 
        ["_color":"PHPExcel_Style_Font":private]=> object(PHPExcel_Style_Color)#188 (4) 
        { 
         ["_argb":"PHPExcel_Style_Color":private]=> string(8) "FF000000" 
         ["_isSupervisor":"PHPExcel_Style_Color":private]=> bool(false) 
         ["_parent":"PHPExcel_Style_Color":private]=> NULL 
         ["_parentPropertyName":"PHPExcel_Style_Color":private]=> NULL 
        } 
        ["_parentPropertyName":"PHPExcel_Style_Font":private]=> NULL 
        ["_isSupervisor":"PHPExcel_Style_Font":private]=> bool(false) 
        ["_parent":"PHPExcel_Style_Font":private]=> NULL 
       } 
       ["_text":"PHPExcel_RichText_TextElement":private]=> string(14) "& TECHNOLOGIES" 
      } 
     } 
    } 
    ["vendor"]=> NULL 
    ["unit_price"]=> NULL 
    ["list_price"]=> NULL 
    ["multiplier"]=> NULL 
    ["times_req"]=> float(1) 
} 

爲什麼我"manufac"鍵拿着一個瘋狂的瘋狂尋找PHPExcel對象?我檢索每個單元格的內容

$array[$rowIndex][$col] = $cell->getCalculatedValue();

我知道Excel工作表的特定的細胞中有一個新的行字符,會是這樣嗎?或者這是否告訴我在該單元格上放置了一些奇怪的格式?

我只是從這個小區想要的文本值,就像所有其他的人給了我......

在此先感謝您的幫助!

回答

6

crazy insane looking PHPExcel Object是一個Rich Text對象,它是一個包含格式化文本的單元格值。

您可以測試細胞是否含有使用富文本對象:

if ($objPHPExcel->getActiveSheet->getCell('A1')->getValue() instanceof PHPExcel_RichText) 

,並使用

$plaintext = $objPHPExcel->getActiveSheet->getCell('A1') 
    ->getValue()->getPlainText(); 
+0

我相信這個曾經工作提取細胞的純文本內容,但有在1.7.8中的錯誤 我在這裏提交了一個錯誤報告 - http://phpexcel.codeplex.com/workitem/19540 – nathansizemore 2013-03-28 16:13:05

+0

如果getCell() - > getValue()曾經返回純文本而不是富文本對象,那麼這是一個錯誤,這意味着無法在orde中獲得現有的富文本r修改它而不是簡單地將其轉換爲純文本。返回富文本對象是正確的行爲。但是,getCalculatedValue應返回明文 – 2013-03-28 16:19:53

+1

修改getCalculatedValue()方法以返回richtext對象的文本內容而不是對象 - 推送到版本1.7.9的github存儲庫準備就緒 – 2013-03-29 11:11:12