当前位置: 首页 > 知识库问答 >
问题:

如何使用apache POI检查excel中的单元格值是否包含Alt+Enter?

钱旻
2023-03-14

示例Excel文件我正在使用下面提到的是我使用的代码,但它是不工作的。我的要求是分离出每个测试步骤并存储它。我已经使用“Alt+Enter”在同一个单元格中写入多行。如果用apache POI处理单元格数据时能检测到“Alt+Enter”,我就可以很容易地分离我提到的行。

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());


    }

}

共有1个答案

仲孙鸿飞
2023-03-14

我认为问题出在system.out.println(temp.contains(“\\n”));

它应该是system.out.println(temp.contains("\n“));换行符用”\n“表示,而不是用”\\n“表示

以下对我来说很好:

system.out.println(“contains alt+enter”);}

 类似资料:
  • 我正在使用Poi.jar从excel表输入,想知道如何检查单元格是否为空。 现在我使用下面的代码。

  • 问题内容: 我只是想知道如何检查TreeMap>是否包含Java中的值?例如: 当我使用containsValue()或contains()方法时,我总是会得到false。有人知道为什么,可以给我建议吗? 谢谢爱德 问题答案: 您正在测试以查看地图是否包含字符串“ square”-但是地图中的值是ArrayList 对象。 如果知道要查找形状,则可以首先获取“形状”列表,然后进行测试以查看其是否包

  • 问题内容: 有什么方法可以检查一个集合是否包含一个或多个具有比使用contains循环两次更好的性能的值? 在其他意义上看起来像这样 问题答案: 循环的实现遍历每个元素并进行测试,因此调用两次 效率低下 。 您可以编写自己的循环,使用已编译的regex 模式同时检查两者,同时查找两个名称:

  • 问题内容: 找出JavaScript数组是否包含值的最简洁,最有效的方法是什么? 这是我知道的唯一方法: 有没有更好,更简洁的方法来实现这一目标? 这与Stack Overflow问题密切相关。在JavaScript数组中查找项目的最佳方法?解决使用数组查找对象的问题indexOf。 问题答案: 现代的浏览器,这不正是这一点,得到广泛支持的人,除IE: 你也可以使用,它不太直接,但对于过时的浏览器

  • 问题内容: 找出JavaScript数组是否包含值的最简洁,最有效的方法是什么? 这是我知道的唯一方法: 有没有更好,更简洁的方法来实现这一目标? 这与Stack Overflow问题密切相关。 在JavaScript数组中查找项目的最佳方法?解决使用数组查找对象的问题。 问题答案: 现代的浏览器,这不正是这一点,得到广泛支持的人,除IE: 你也可以使用,它不太直接,但对于过时的浏览器不需要使用。

  • 问题内容: 使用普通的JavaScript(不是jQuery),是否可以检查元素是否 包含 类? 目前,我正在这样做: 问题是,如果我将HTML更改为此… …不再存在完全匹配的内容,因此我得到的默认输出为none()。但我还是想输出为,因为还 包含 了类。 问题答案: 使用方法: 这适用于所有当前浏览器,并且也有polyfill支持旧版本的浏览器。 或者 ,如果您使用较旧的浏览器,并且不想使用po