如您所见,有时我们需要在Excel文件中添加大量超链接,作为程序员,您不想手动执行此操作,但您希望以编程方式执行此操作。 我已经在互联网上搜索了但我只知道如何以编程方式添加Web的超链接,而不是当前的excel文件超链接。 所以我认为找出如何以编程方式添加当前excel文件的超链接(或本地超链接)是一个很好的理想。
答案 0 :(得分:2)
Excel支持HYPERLINK()
function:
HYPERLINK(link_location, [friendly_name])
请查看我上面链接的页面,了解HYPERLINK()
功能的常见示例,例如您要查找的内容。
例如,以下公式打开文件,导航到年度工作表并选择F10。超链接文本是单元格D1的内容。
=HYPERLINK("[http://example.microsoft.com/report/budget report.xlsx]Annual!F10", D1)
在上面的示例中,Excel文件位于HTTP位置,但它同样可以是本地路径,如下所示:
=HYPERLINK("[D:\Documents\budget report.xlsx]Annual!F10", D1)
答案 1 :(得分:1)
我还没有找到一种方法来使用lib.Microsoft.Office.Interop.Excel将超链接添加到Excel的单元格中,但我想出了一个可以通过剪贴板添加超链接的理想数据
我研究了Excel剪贴板数据,发现Excel数据可以是HTML数据。所以我将数据作为HTML处理并粘贴到Excel中 - 并且BAM - 我们获得了Excel的单元格的超链接
我们有这样的课程
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>xxx</version>
<configuration>
<classpathDependencyExcludes>
<classpathDependencyExclude>org.apache.commons:commons-lang3</classpathDependencyExclude>
</classpathDependencyExcludes>
</configuration>
</plugin>
并使用像这样的类
class HDNData
{
StringBuilder builder;
public void SetBuilder(StringBuilder dataBuilder)
{
this.builder = dataBuilder;
}
public string Data { get; set; }
public string Hyperlink { get; set; }
public string HexColor { get; set; }
public override string ToString()
{
builder.Clear();
bool hasHyperlink = !string.IsNullOrEmpty(Hyperlink);
bool hasColor = !string.IsNullOrEmpty(HexColor);
if (hasHyperlink)
{
builder.Append("<a href=\"");
builder.Append(Hyperlink);
builder.Append("\">");
}
if(hasColor)
{
builder.Append("<span style='color:");
builder.Append(HexColor);
builder.Append("'>");
}
builder.AppendLine(Data);
if (hasHyperlink)
builder.Append("</a>");
return builder.ToString();
}
}
class HDNHtml
{
StringBuilder builder = new StringBuilder();
StringBuilder cellBuilder = new StringBuilder();
private List<List<HDNData>> data = new List<List<HDNData>>();
public void Add(int i, HDNData hdnData)
{
if(i < data.Count)
{
hdnData.SetBuilder(cellBuilder);
data[i].Add(hdnData);
}
else
{
if (i == data.Count)
{
data.Add(new List<HDNData>());
hdnData.SetBuilder(cellBuilder);
data[i].Add(hdnData);
}
}
}
public override string ToString()
{
builder.Clear();
builder.AppendLine("<html>");
builder.AppendLine("<head></head>");
builder.AppendLine("<body>");
builder.AppendLine("<table>");
builder.AppendLine("<col>");
foreach (List<HDNData> row in data)
{
builder.AppendLine("<tr>");
foreach (HDNData col in row)
{
builder.AppendLine("<td>");
builder.Append(col.ToString());
builder.AppendLine("</td>");
}
builder.AppendLine("</tr>");
}
builder.AppendLine("</table>");
builder.AppendLine("</body>");
builder.AppendLine("</html>");
return builder.ToString();
}
}
现在运行代码并将剪贴板数据粘贴到Excel的工作表中。请注意,Excel工作簿必须玷污单元名称:GTA,因此excel的单元格&#39;超链接将链接到该GTA单元格。