如何将SMB文件链接添加到单元格中?

问题描述:

我有一个存储在服务器中的文件,路径是这样的:\\ myserver \ folder \ myfile.txt如何将SMB文件链接添加到单元格中?

如何把这个SMB地址与超链接单元格?

Hyperlink link = createHelper.createHyperlink(Hyperlink.LINK_FILE); 
link.setAddress("What to write here?"); 

当我用下面的代码:

link.setAddress("\\\\myserver\\folder\\myfile.txt"); 

它会返回错误:

Caused by: java.net.URISyntaxException: Illegal character in path at index 0: \\myserver\folder\myfile.txt 
at java.net.URI$Parser.fail(Unknown Source) 
at java.net.URI$Parser.checkChars(Unknown Source) 
at java.net.URI$Parser.parseHierarchical(Unknown Source) 
at java.net.URI$Parser.parse(Unknown Source) 
at java.net.URI.<init>(Unknown Source) 
at org.apache.poi.xssf.usermodel.XSSFHyperlink.validate(XSSFHyperlink.java:240) 
... 2 more 
+0

什么你会把相同的链接到Excel?那么如果你将它提供给Apache POI会发生什么? – Gagravarr

+0

它应该是你需要的:https://stackoverflow.com/questions/7771888/access-to-file-using-java-with-samba-jcifs –

+0

不,这篇文章是关于如何处理SMB访问/身份验证。我想知道如何通过Apache POI将SMB超链接添加到Excel单元格中。 – cao

我想你的术语可能阻碍您的搜索。我相信这是UNC的道路。我不知道UNC与SMB的关系如何,因为我更像是一名Linux人员。然而,我成功地得到了以下代码工作

 CreationHelper createHelper = workbook.getCreationHelper(); 
     Hyperlink link = createHelper.createHyperlink(Hyperlink.LINK_FILE); 
     link.setAddress((new File ("\\\\myserver\\folder\\myfile.txt")).toURI().toString()); 
     cell.setHyperlink(link); 
+0

用'file:'和'/'而不是'\'来试试。好吧,Java没有问题来编译这段代码。但Excel有问题:生成的链接不正确,即无法单击并打开SMB超链接。 – cao

+0

点击链接会发生什么?或者链接不显示?如果它没有显示出来,你只需要设置一个单元格值。我在早上发布我的完整工作代码片段 –

+0

在生成的Excel文件中,如果我将鼠标移动到单元格,它会显示弹出信息“file://// D:\ work \ workbook1.xlsx - file:// //myserver/folder/myfile.txt - 一次关闭,点击并按住选择这个单元格“;其中D:\ work \ workbook1.xlsx是我正在使用的Excel文件。如果我点击它,它会显示错误“引用无效”。如果我在Excel中手动编辑超链接,弹出信息将是“file:/// \\ myserve \ folder \ myfile.txt - 点击一次后,点击并按住以选择该单元格”,这是完美的。 – cao