2012-03-29 64 views
1

我正在創建一個從xlsx文件導入數據到db的小腳本。我正在使用PHPExcel庫來讀取數據。問題在於它似乎沒有辦法將字符轉換爲等效的html標籤。這背後的原因是,我將把已保存的數據拉到已經有html標籤的頁面中。所以我能想到解決這個問題的一種方法是解析讀者從每個單元中獲取的文本,並將每個字符轉換爲與其相應的html標記。這裏的文字從XLSX細胞樣本:如何從excel文件中檢測格式化字符?

貢獻增加經常頭痛的危險因素:

  • 焦慮
  • 蕭條
  • 睡眠紊亂
  • 肥胖
  • 打鼾
  • 過度使用咖啡因
  • 過量使用止痛藥的
  • 的頭部和頸部經常應變
  • 眼部問題
  • 吸菸
  • 酒精攝入
  • 使用違禁藥物

我想轉換在保存到數據庫之前,圓形的子彈和換行符將放入相應的html標記中。我如何實現這一目標?

編輯:下面的代碼:

<?php 

include 'PHPExcel.php'; 

$objReader = PHPExcel_IOFactory::createReader('Excel2007'); 
//$objReader->setReadDataOnly(true); 

$objPHPExcel = $objReader->load("test.xlsx"); 
$objWorksheet = $objPHPExcel->getActiveSheet(); 

?> 

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    </head> 
    <body> 
<?php 
echo '<table>' . "\n"; 
foreach ($objWorksheet->getRowIterator() as $row) { 
    echo '<tr>' . "\n"; 

    $cellIterator = $row->getCellIterator(); 
    $cellIterator->setIterateOnlyExistingCells(false); // This loops all cells, 
                // even if it is not set. 
                // By default, only cells 
                // that are set will be 
                // iterated. 
    foreach ($cellIterator as $cell) { 
    echo '<td>' . $cell->getValue() . '</td>' . "\n"; 
    } 

    echo '</tr>' . "\n"; 
} 
echo '</table>' . "\n"; 
?> 
    </body> 
</html> 
+0

該單元格上的getValue()的結果是什麼......即,實際的文本內容是什麼? – 2012-03-29 12:38:03

+0

@Mark Ba​​ker:這只是一個純文本,沒有任何格式。或者如果它被格式化,它肯定不是HTML。文本擠在一起;沒有間距,沒有換行符,但圓形子彈被渲染。 – jilseego 2012-03-29 12:48:43

+0

我沒有想法,我不得不看看......這絕對是文本返回一個不支持richtext對象? – 2012-03-29 14:08:44

回答

1

htmlentities應該做的伎倆與nl2br一起:

$value = $cell->getValue(); 
$value = htmlentities($value); 
$value = nl2br($value); 

如果字符串是雙引號,你可能想擺脫報價在應用之前:

$value = $cell->getValue(); 
$value = trim($value, '"'); 
$value = htmlentities($value); 
$value = nl2br($value); 

htmlentities將使子彈成爲&公牛;所以你會得到一個代表子彈的可視化字形,而不是一個ul/ol列表。