csv
Excel
匯出
Change display name for hyperlink in csv file while opening through Excel
Can Excel interpret the URLs in my CSV as hyperlinks?
問題排除
解決office(含word/excel)內的超連結無法開啟
CSV是純文本格式
在WindowOS下會預設使用Excel開啟
但除了文本還可以加入超連結寫法怎麼使用CSV製作超連結??
=HYPERLINK("
https://www.google.com/
")
QA一定要看
CSV需要將一個單元格中的雙引號(")用成兩個雙引號("")
所以程式會是
(三四五行一起使用)
$content = "=HYPERLINK("{$link}")";
var_dump($content);
$content = "=HYPERLINK(\"".$link."\")";
$content = str_replace("\"", "\"\"", $content);
$content = "\"" . $content . "\"";
這是完成的CSV用Excel開啟的顯示
圖片上傳裡的單元格是超連結
但沒有下底線跟呈現超連結中的藍色
Q1 用Excel打開CSV為什麼超連結沒有變色跟下底線
原因是
其實Excel並沒有吃到超連結設定所以在Excel的程式中當然不會呈現
Excel程式所設定的樣式style
個人理解
請將Excel當成濾鏡 文件還是CSV格式
我們是透過Excel去看副檔名/擴展名為CSV的文件
而文件本身是不包含樣式style的
所以Excel呈現出來當然不會帶樣式
Q2 如果想加入顏色可以嗎?(文字顏色或單元格顏色)
無法加入顏色跟樣式
CSV本來就是純文字就是不含樣式
要使用樣式請使用第三方套件設定(或是htmlTable to Excel)
使用第二個參數
=HYPERLINK("https://www.google.com","Google")
在串CSV時盡量像上面方式一樣 分開串雙引號/逗號
不要使用第一行方式串接
while ($row = SQLdataArray($stmt)) {
$row['uname'] = Regreplace($row['uname']);
$row['fbook'] = Regreplace($row['fbook']);
$row['line'] = Regreplace($row['line']);
$row['ig'] = Regreplace($row['ig']);
$row['award'] = Regreplace($row['award']);
$regTime = '' . $row['createTime']->format('Y-m-d H:i:s');
foreach($row as $k => $v){
if( in_array($k, $titleArr, true) ){
$str = ($v === '' || is_null($v) )? '':$v;
if($k === 'cel' || $k === 'tel' || $k === 'orders' || $k === 'invoice' || $k === 'vip'){
$str = "\t{$str}";
}
elseif($k === 'uploadImg'){
// 這段
$link = $url.$str;
$cell = "=HYPERLINK(\"".$link."\", \"".$str."\")";
$cell = str_replace("\"", "\"\"", $cell);
$cell = "\"" . $cell . "\"";
$str = $cell;
// $str = "<a href=\"{$link}\">{$link}</a>"; //確認不行
// $str = "=HYPERLINK(".$link.")";
// $str = "=HYPERLINK(\"" .$url . $str ."\")";
//"=HYPERLINK(""http://www.google.com"")"
}
$content .= "{$str},";
}
}
$content .= "{$regTime}\r\n";
}