关于文件:Excel单元格格式特例

Excel Cell Formatting Special Case

我有一个有趣的困境,想知道是否有人知道这是否可行。我正在使用 java 创建一个 .csv 文件,每行的逗号分隔条目之一是一个 url。

示例:

item1,item2,item3,http://myurl.com

最初当我在 Excel 中加载 .csv 文件时,它只加载了 url 的文本,并没有使其可点击。我能够通过在创建文件时用这个字符串包围条目来解决这个问题:

=HYPERLINK("http://myurl.com")

加载 Excel 时,链接可点击,鼠标指针变为手形图标。唯一的问题是,当您只是看着它而不是悬停在单元格上时,它看起来就像是白底黑字。通常当你看到一个链接时,它是蓝色的,带有下划线,表示它是可点击的。我想要这个可视化队列,但我不确定是否有一种方法可以通过使用某种单元格格式功能或其他方式修改上面的函数来实现。

是的,我知道什么是条件格式以及如何将其应用于 Excel 中的单元格。但是,这对我不起作用,因为我只需要它在加载文件时工作。当用户下载文件时,该文件总是被创建新的,因为内容总是在变化。任何想法将不胜感激。


这绝对可以做到,但它可能比您预期的要复杂。

首先,您必须按照本文中的步骤创建一个新的自定义数字格式,您可以在所有新工作簿中使用它,您的客户也是如此。

向自定义列表添加单元格格式选项

我会引用这个列表,但我不想因为 HansV 的出色解决方案而受到任何赞扬。

您要添加的选项是"[blue]General"

现在,您的 CSV 文件应该像下面的示例一样保存字符串:
"=text(hyperlink("http://www.google.com"),"[blue]General")"

所以,现在您正在应用新格式(控制字体颜色)。只需将 google.com 替换为您的 URL。您会注意到有许多引用是棘手的格式化 CSV 强制的产物,因此它会在需要的地方添加引号,并且不会将必要的逗号(对于 TEXT 函数)拆分为两个单元格。


您可以使用 jXLS 库创建模板化的 excel 文件。它真的很容易使用。样品


通过双击 .csv 文件输入的超链接是"冷"(不可点击)的原因是用户界面中从键入的文本中生成"热"超链接的部分已被绕过。如果 .csv 具有原始 URL 而不是 =HYPERLINK() 函数,则可以通过运行以下命令使它们变热:

1
2
3
4
5
6
7
8
9
10
11
Sub HyperIgniter()
    Dim r As Range
    For Each r In ActiveSheet.UsedRange
        If Left(r.Text, 4) ="http" Then
            r.Select
            Application.SendKeys"{F2}"
            Application.SendKeys"{ENTER}"
            DoEvents
        End If
    Next r
End Sub

这相当于重新输入每个超链接,从而使它们"热"并赋予它们通常的格式。