![](/img/trans.png)
[英]Not able to read time value from spreadsheet using Spreadsheet_Excel_Reader in PHP
[英]Read URL from excel file using Spreadsheet_Excel_Reader in php
我正在使用Spreadsheet_Excel_Reader()讀取Excel文件。
我想讀取工作表數據中的網址,如下所示
<a href="link">text</a>
我知道這個問題將通過使用PHPExcel這樣解決
$leadCommentLInk=$worksheet->getCellByColumnAndRow(7, 2)->getHyperlink()->getUrl();
請幫助我
最后,我通過更改如下的reader.php文件獲得了解決方案
在_parsesheet方法中添加了以下開關案例
case SPREADSHEET_EXCEL_READER_TYPE_HYPER:
// Only handle hyperlinks to a URL
$row = ord($this->data[$spos]) | ord($this->data[$spos+1])<<8;
$row2 = ord($this->data[$spos+2]) | ord($this->data[$spos+3])<<8;
$column = ord($this->data[$spos+4]) | ord($this->data[$spos+5])<<8;
$column2 = ord($this->data[$spos+6]) | ord($this->data[$spos+7])<<8;
$linkdata = Array();
$flags = ord($this->data[$spos + 28]);
$udesc = "";
$ulink = "";
$uloc = 32;
$linkdata['flags'] = $flags;
if (($flags & 1) > 0 ) { // is a type we understand
// is there a description ?
if (($flags & 0x14) == 0x14 ) { // has a description
$uloc += 4;
$descLen = ord($this->data[$spos + 32]) | ord($this->data[$spos + 33]) << 8;
$udesc = substr($this->data, $spos + $uloc, $descLen * 2);
$uloc += 2 * $descLen;
}
$ulink = $this->read16bitstring($this->data, $spos + $uloc + 20);
if ($udesc == "") {
$udesc = $ulink;
}
}
$linkdata['desc'] = $udesc;
$linkdata['link'] = $this->_encodeUTF16($ulink);
for ($r=$row; $r<=$row2; $r++) {
for ($c=$column; $c<=$column2; $c++) {
$this->sheets[$this->sn]['cellsInfo'][$r+1][$c+1]['hyperlink'] = $linkdata;
}
}
break;
並添加此常量
define('SPREADSHEET_EXCEL_READER_TYPE_HYPER', 0x01b8);
和方法
function read16bitstring($data, $start) {
$len = 0;
while (ord($data[$start + $len]) + ord($data[$start + $len + 1]) > 0) $len++;
return substr($data, $start, $len);
}
否則我們可以只使用一個文件excel_reader2.php
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.