【问题标题】:Put brackets around filename for Excel formula将括号括在 Excel 公式的文件名中
【发布时间】:2019-01-30 15:37:13
【问题描述】:

我的项目基于 Apache POI。我正在尝试在单元格上使用公式。 我的公式如下。

sheet7.createRow(0).createCell(0).setCellFormula("+'C:\\Users\\Desktop\\[Test.xlsx]Average_Graph'!A2");

我正在使用 JFileChooser,它允许用户选择文件。因此每次使用程序时都会更改文件路径。

从 JFileChooser 中,我得到如下文件路径。

 String filepath= "C:\\Users\\Desktop\\Sheet.xlsx"`

为了正确使用公式,文件路径应采用以下格式。

"C:\\Users\\Desktop[Sheet.xlsx]"

如何更改从 JFileChooser 获取的字符串以正确运行公式?

【问题讨论】:

  • 在你的 java 程序中有一个 String 有错误的转义。源码里真的是这样的吗?
  • “如下”是什么意思?您想插入括号吗?还是只获取文件名?
  • 另外,结果是否正确,在"[" 之前没有"\\"
  • @LSH94 然后尝试更正您发布的示例并尝试包含更多代码。目前还不清楚你想要实现什么。
  • @LSH94 请分享您的代码。否则,让人们尝试推测您正在尝试做什么并以 cmets 的方式提供信息是不够的。

标签: java string swing apache-poi


【解决方案1】:

只需拆分父目录名和文件名,并将字符“[”和“]”放在文件名周围:

    File select = fileC.getSelectedFile();
    String filepath = select.getParentFile().getAbsolutePath()+"["+select.getName()+"]";

*EDIT 我把问题理解错了,所以我想到了错误的问题;

【讨论】:

  • 他为什么需要 2 个文件分隔符?出于逃避原因,他可能在初始字符串中有两个
  • 请阅读 cmets,他说“我从 JFileChooser 获取字符串。”。因此他需要一个更灵活的解决方案。
【解决方案2】:

如果你有一个JFileChooser,你就有一个File 对象,而不仅仅是一个String

而您应该使用FilePaths API 来独立于操作系统

File f = jFileChooser.getSelectedFile();
String path = f.getParent();
String name = f.getName();

String newFormat = String.format("%s[%s]", path, name);

【讨论】:

  • 鉴于 OP 确实想要实现他们描述的模式,这应该是公认的答案。
  • 这是清晰简洁的,我认为是被要求的。
  • @cricket_007 你提供的代码完成了工作。但另一方面,我需要将其更改为 C:\\Users\\Desktop\[Sheet.xlsx] 请帮助。
  • 添加最后一个斜线有什么困难? Java没有在内部存储它,它只将它显示为一个转义字符,所以我不明白这个问题。更具体地说,你不认为它只是"%s\\[%s]"作为格式吗?
【解决方案3】:

据我了解,您可以从文件选择器中获取作为字符串的路径。所以在你的例子中你可以这样做:

   String filepath= "C:\\Users\\Desktop\\Sheet.xlsx"
   Path path = Paths.get(filepath);
   String result=path.getParent()+"["+path.getFileName()+"]";

结果将是您的新字符串,其中包含用大括号括起来的文件

或者另一种解决方案是使用文件

  File f=new File(filepath);
  String result=f.getParent()+"["+f.getName()+"]";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 2014-09-20
    • 2022-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多