Мой проект основан на 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, для правильного выполнения формулы?
Что значит "следующим образом"? Вы хотите вставлять скобки? Или получить только имя файла?
Кроме того, правильный ли результат, без "\\" до "["?
Как получить значение String?
Нет. Я разместил строку таким образом для простоты.
@ LSH94, затем попробуйте исправить опубликованный вами пример, а также попробуйте добавить больше кода. Не совсем понятно, чего вы хотите достичь.
@deHaar я получаю строку от JFileChooser.
@ cricket_007 Мне нужно добавить [] для имени файла и добавить другой \ для пути к файлу.
никто не поможет вам, если вы не покажете всю необходимую информацию
@ LSH94, значит, вы хотите, чтобы String был заменен после того, как получил его от JFileChooser? Вы хотите вставить эти скобки или хотите только имя файла?
@ LSH94 поделитесь, пожалуйста, своим кодом. В противном случае недостаточно иметь людей, пытающихся рассуждать о том, что вы пытаетесь сделать, и предоставления информации в виде комментариев.
JFileChoser дает вам объект File, а не строку, AFAIK




Просто разделите имя родительского каталога и имя файла и поместите символы «[» и «]» вокруг имени файла:
File select = fileC.getSelectedFile();
String filepath = select.getParentFile().getAbsolutePath()+"["+select.getName()+"]";
* ИЗМЕНИТЬ Я неправильно понял вопрос, поэтому подумал о ложной проблеме;
Зачем ему нужны 2 разделителя файлов? Вероятно, он имеет два в начальной строке для побега.
Прочтите, пожалуйста, комментарии, там написано: «Я получаю строку от JFileChooser.». Таким образом, ему потребуется более гибкое решение.
Если у вас есть JFileChooser, у вас есть объект File, а не только String
И вы, должен, в любом случае используете API File или Paths, чтобы быть независимыми от ОС.
File f = jFileChooser.getSelectedFile();
String path = f.getParent();
String name = f.getName();
String newFormat = String.format("%s[%s]", path, name);
Учитывая, что ОП действительно хочет достичь описанного ими шаблона, это должен быть принятый ответ.
Это ясно и лаконично, и я думаю, что именно этого и просят.
@ cricket_007 Код, который вы указали, сделал свою работу. Но с другой стороны, мне нужно изменить его, чтобы получить вывод как C: \\ Users \\ Desktop \ [Sheet.xlsx] Пожалуйста, помогите.
Какие у вас трудности с добавлением последней косой черты? Java не хранит это внутри, а отображает только как escape-символ, поэтому я не понимаю, в чем проблема. В частности, вам не кажется, что это просто формат "%s\\[%s]"?
Насколько я понимаю, вы получаете путь в виде строки из средства выбора файлов. Итак, в вашем примере вы можете:
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()+"]";
В вашей java-программе есть
Stringс неправильными escape-символами. Это действительно так в исходном коде?