如何将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
我想你的术语可能阻碍您的搜索。我相信这是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);
用'file:'和'/'而不是'\'来试试。好吧,Java没有问题来编译这段代码。但Excel有问题:生成的链接不正确,即无法单击并打开SMB超链接。 – cao
点击链接会发生什么?或者链接不显示?如果它没有显示出来,你只需要设置一个单元格值。我在早上发布我的完整工作代码片段 –
在生成的Excel文件中,如果我将鼠标移动到单元格,它会显示弹出信息“file://// D:\ work \ workbook1.xlsx - file:// //myserver/folder/myfile.txt - 一次关闭,点击并按住选择这个单元格“;其中D:\ work \ workbook1.xlsx是我正在使用的Excel文件。如果我点击它,它会显示错误“引用无效”。如果我在Excel中手动编辑超链接,弹出信息将是“file:/// \\ myserve \ folder \ myfile.txt - 点击一次后,点击并按住以选择该单元格”,这是完美的。 – cao
什么你会把相同的链接到Excel?那么如果你将它提供给Apache POI会发生什么? – Gagravarr
它应该是你需要的:https://stackoverflow.com/questions/7771888/access-to-file-using-java-with-samba-jcifs –
不,这篇文章是关于如何处理SMB访问/身份验证。我想知道如何通过Apache POI将SMB超链接添加到Excel单元格中。 – cao