PHPExcel - How to set a url

风流意气都作罢 提交于 2019-12-31 20:15:15

问题


I am isung PHPExcel and have a URL in a string. When doing:

$url = 'http://dx.doi.org/10.1016/j.phymed.2005.11.003'
$xls = new PHPExcel();
$xls->setActiveSheetIndex(0);
$xls->getActiveSheet()->setCellValueByColumnAndRow(1,2,$url);

The url is set as simple text.

I also tried:

$xls->getActiveSheet()->getCellByColumnAndRow(1,2)->getHyperlink()->setUrl('"'.$url.'"');

But then, when clicking on the link, it tries to open a local folder.

Any idea how to do that?

Thank you.

EDIT

When I try do do this without quotes:

$xls->getActiveSheet()->getCellByColumnAndRow(1,2)->getHyperlink()->setUrl($url);

Then I am getting the error:

Exception' with message 'Invalid parameters passed.'

My real url is

http://dx.doi.org/10.1016/j.phymed.2005.11.003

I noticed that when setting a slash at the end, the hyperlink works, but the url is then wrong.


回答1:


I have found the solution, somehow the url I had was not recognized by excel.

$url = str_replace('http://', '', $link);
$xls->getActiveSheet()->getCellByColumnAndRow(1,2)->getHyperlink()->setUrl('http://www.'.$url);

And now it works. Hope this will help.




回答2:


I am guessing your field value has integer value. If it is so, then you first have to convert the data type of that cell and then set the hyperlink. Below is how I have done this.

//set the value of the cell
$this->phpExcelObj->getActiveSheet()->SetCellValue('A1',$id);
//change the data type of the cell
$this->phpExcelObj->getActiveSheet()->getCell("A1")->setDataType(PHPExcel_Cell_DataType::TYPE_STRING2);
///now set the link
$this->phpExcelObj->getActiveSheet()->getCell("A1")->getHyperlink()->setUrl(strip_tags($link));



回答3:


Try to write your code as below line:

$objSheet->setCellValue('A1', '=Hyperlink("https://www.someurl.com/","Mi web")');




回答4:


Just lost an hour on the same issue. Finally (after checking PHPexcel source) figured out, that ->getCell('A1') is not required and allways lead me to the following error: Call to a member function getHyperlink() on a non-object. Instead you have to pass the cell-coordinates directly to getHyperlink('A1') like this:

$YourActiveSpreadsheet->getHyperlink('A1')->setUrl($url);


来源:https://stackoverflow.com/questions/23100636/phpexcel-how-to-set-a-url

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!