这是我以前的问题的更正 Put brackets around filename for Excel formula
我的项目基于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获取的字符串以正确运行公式?
在上一个问题中,我错误地键入了 C:\ Users \ Desktop [Sheet.xlsx] ,而不是 C:\ Users \ Desktop \ [Sheet.xlsx]
答案给了我提到的输出。但是我需要输出为C:\Users\Desktop\[Sheet.xlsx]
请帮助。
答案 0 :(得分:1)
如果您想通过直接更改文件路径来解决此问题,则可以使用String#replaceAll
:
String filepath = "C:\\Users\\Desktop\\Sheet.xlsx";
filepath = filepath.replaceAll("(?<=\\\\)([^\\\\]+)$", "[$1]");
System.out.println(filepath);
C:\Users\Desktop\[Sheet.xlsx]
答案 1 :(得分:1)
文件名中不会带有\反斜杠,因此我们可以假定文件名在最后一个反斜杠之后开始,并在字符串末尾结束。
我们可以使用它:
String filepath = "C:\\Users\\Desktop\\Sheet.xlsx";
String dir = filepath.substring(0, filepath.lastIndexOf("\\"+1));
String filename = filepath.substring(filepath.lastIndexOf("\\"+1));
filepath = dir + "[" + filename + "]";
或更短的版本:
String filepath = "C:\\Users\\Desktop\\Sheet.xlsx";
filepath = filepath.substring(0, filepath.lastIndexOf("\\"+1)) +
"[" + filepath.substring(filepath.lastIndexOf("\\"+1)) + "]";