Как проверить, содержит ли значение ячейки в excel alt + enter, используя apache poi?

Образец файла Excel, который я использую Ниже приведен код, который я использовал, но он не работает. Мое требование - разделить каждый шаг теста и сохранить его. Я использовал «alt + enter», чтобы написать несколько строк в одной и той же ячейке. Если каким-то образом я могу обнаружить «alt + enter» при обработке данных ячейки с помощью apache POI, я могу легко разделить упомянутые строки.

package excelExportAndFileIO;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.Test;


public class ExcelHelper {


    public static Map<String,String> GetData(String key,String sheetName) throws IOException{
        HashMap<String, String> hm= new HashMap<String, String>();

        try {
             List<String> keyList=new ArrayList<>();
                List<String> valueList=new ArrayList<>();
            //String path = new File(".").getCanonicalPath();
            //String spath = "C:\\Users\\gur39708\\Documents\\INS500_TestPlan_ver2.xlsx";
            String spath = "mypath"+"\\INS500_TestPlan_ver2.xlsx";

            String fileExtensionName = spath.substring(spath.indexOf("."));

            File file =    new File(spath);
            //Create an object of FileInputStream class to read excel file

            FileInputStream inputStream = new FileInputStream(file);
            Workbook wb = null;
            //Find the file extension by spliting file name in substring and getting only extension name


            //Check condition if the file is xlsx file

            if (fileExtensionName.equals(".xlsx")){

            //If it is xlsx file then create object of XSSFWorkbook class
                wb = new XSSFWorkbook(inputStream); 

            }

            //Check condition if the file is xls file

            else if (fileExtensionName.equals(".xls")){

            //If it is xls file then create object of XSSFWorkbook class

                wb = new HSSFWorkbook(inputStream);

            }


            //Read sheet inside the workbook by its name

            Sheet sh = wb.getSheet(sheetName);

            //Get the current count of rows in excel file

            int rowCount = sh.getLastRowNum()+1;

            System.out.println("rowcount is "+rowCount);

          //Create a loop over all the rows of excel file to read it
            int start=0;
            for (int i = 0; i < rowCount; i++) {

               Row row = sh.getRow(i);

                //Create a loop to print cell values in a row

                for (int j = 0; j < row.getLastCellNum(); j++) {

                    if (row.getCell(j).getStringCellValue().equals(key)){
                        String temp = row.getCell(j+1).getStringCellValue();
                        System.out.println(temp.contains("\\n"));
                    }

                }
                start ++;

            }    
            for(int i=0;i<=keyList.size()-1;i++){
                hm.put(keyList.get(i), valueList.get(i));
            }

        }catch(Exception e){
            System.out.println(e);
        }
        return hm;
    }

    public int getIndex(String keyword, String SheetName){


        return 0;

    }

    @Test
    public static void main(String args[]) throws IOException{

        Map<String, String> hm1= new HashMap();
        hm1 = GetData("device types","Sheet1");
        //System.out.println(hm1.size());


    }

}

Вы пробовали \ r \ n вместо \ n?

Yuriy Tsarkov 23.10.2018 09:40

В зависимости от того, на какой платформе он появился, возможно, проверить наличие \r?

Gagravarr 23.10.2018 09:47

да, я пробовал, но это не решает мою проблему.

Nishant sharma 23.10.2018 09:48

Установите точку останова в строке System.out.println(temp.contains("\\n")); и скопируйте содержимое переменной temp в любой текстовый редактор, который позволяет видеть непечатаемые символы. Вы также можете найти в Google службы, которые делают это в Интернете. Затем вы можете увидеть, какие символы есть в качестве разделителей строк

Yuriy Tsarkov 23.10.2018 10:26
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
801
1

Ответы 1

Я думаю проблема в System.out.println(temp.contains("\\n"));

должен быть System.out.println(temp.contains("\n")); символ новой строки представлен "\ n", а не "\\ n"

для меня отлично работает следующее:

// чтение значения ячейки

String tempName = cell.getStringCellValue();

if (tempName.contains("\n")) {

System.out.println("Contains alt+enter"); }

Другие вопросы по теме