web-dev-qa-db-fra.com

PHPExcel - Comment définir une URL

Je suis isung PHPExcel et j'ai une URL dans une chaîne.

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

L'URL est défini comme un texte simple.

J'ai aussi essayé: 

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

Mais ensuite, en cliquant sur le lien, il essaie d'ouvrir un dossier local.

Une idée comment faire ça?

Je vous remercie.

MODIFIER

Quand j'essaye de le faire sans guillemets:

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

Alors j'obtiens l'erreur:

Exception' with message 'Invalid parameters passed.'

Ma vraie URL est 

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

J'ai remarqué que lorsque vous définissez une barre oblique à la fin, le lien hypertexte fonctionne, mais l'URL est alors fausse.

13
Miloš

J'ai trouvé la solution, en quelque sorte l'URL que j'avais n'était pas reconnu par Excel.

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

Et maintenant ça marche. J'espère que cela aidera.

20
Miloš

Je devine que votre valeur de champ a la valeur entière. Si tel est le cas, vous devez d'abord convertir le type de données de cette cellule, puis définir le lien hypertexte. Ci-dessous est comment j'ai fait cela.

//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));
11
vsingh

Essayez d'écrire votre code comme ci-dessous:

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

3
caicedo1089

Je viens de perdre une heure sur le même sujet. Enfin (après vérification de la source PHPexcel), nous avons découvert que -> getCell ('A1') n'est pas requis et m'a toujours conduit à l'erreur suivante: Appel à une fonction membre getHyperlink () sur un non-objet. À la place, vous devez passer les coordonnées de cellule directement à getHyperlink ('A1') comme ceci:

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