Изменить строку (поместите квадратные скобки вокруг имени файла и получите две обратные косые черты) - PullRequest
0 голосов
/ 28 августа 2018

Мой проект основан на 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, чтобы правильно запустить формулу? Мне нужно две обратные косые черты вместо одной. Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Я написал некоторую функцию. Просто передайте абсолютный путь к файлу, и вы получите вывод. Пусть это поможет ....

public static String pathFormat(String path) {
        System.out.println("pathFormat1...");
        String formatStr="\"";
        StringTokenizer st=new StringTokenizer(path,"\\");
        while(st.hasMoreTokens()) {
            String nextToken = st.nextToken();
            System.out.println(nextToken);
            //formatStr+=nextToken;
            if(st.hasMoreTokens()) {
                formatStr+=nextToken;
                formatStr+="\\\\";
            }
            else {
                formatStr+="[";
                formatStr+=nextToken;
                formatStr+="]\"";
            }
        }
0 голосов
/ 28 августа 2018

Попробуйте выполнить две замены: одну для обработки имени файла, другую для обработки форматирования пути:

String filepath = "C:\\Users\\Desktop\\Sheet.xlsx";
filepath = filepath.replaceAll("(?<=\\\\)([^\\\\]+)$", "[$1]").replace("\\, "\\\\");
System.out.println(filepath);

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