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

如何将excel单元格值转换为字符串类型?在excel中将单元格设置为文本类型无效

赏阳嘉
2023-03-14

如何将该值作为字符串而不是数字从单元格中获取?下面给出了读取和编写excel的代码

public String getValueFromCell(int iRowNumber, int iColNumber)
   {
      XSSFRow row = sheet.getRow(iRowNumber);
      Cell cell = row.getCell(iColNumber);

      return cell == null ? "" : cell.toString();
   }

   /**
    * returns no. of rows of excel sheet
    * 
    * @return
    */
   public int getRowCount()
   {
      return sheet.getLastRowNum();
   }

   /**
    * returns no. of columns of excel sheet
    * 
    * @param sheetName
    * @return
    */
   public int getColumnCount(String sheetName)
   {

      sheet = workbook.getSheet(sheetName);
      row = sheet.getRow(0);
      return row.getLastCellNum();
   }

   /**
    * return row number of a String value
    * 
    * @param value
    * @return
    */
   public int getRowNumber(String value)
   {
      XSSFSheet indexsheet = workbook.getSheet("Index");
      for(int i = 0; i <= indexsheet.getLastRowNum(); i++)
      {
         row = indexsheet.getRow(i);
         if(value.equalsIgnoreCase(row.getCell(0).getStringCellValue()))
         {
            return i + 1;
         }
      }
      return 0;
   }

   /**
    * sets data in a cell
    * 
    * @param path
    * @param sheetName
    * @param colName
    * @param rowNum
    * @param data
    * @return
    */
   public boolean setCellData(String path, String sheetName, String colName, int rowNum, String data)
   {
      try
      {
         if(rowNum <= 0)
            return false;

         int index = workbook.getSheetIndex(sheetName);
         int colNum = -1;
         if(index == -1)
            return false;


         sheet = workbook.getSheetAt(index);


         row = sheet.getRow(0);
         for(int i = 0; i < row.getLastCellNum(); i++)
         {
            if(row.getCell(i).getStringCellValue().trim().equals(colName))
               colNum = i;
         }
         if(colNum == -1)
            return false;

         sheet.autoSizeColumn(colNum);
         row = sheet.getRow(rowNum - 1);
         if(row == null)
            row = sheet.createRow(rowNum - 1);

         cell = row.getCell(colNum);
         if(cell == null)
            cell = row.createCell(colNum);

         cell.setCellValue(data);

      }
      catch(Exception e)
      {
         e.printStackTrace();
         return false;
      }
      return true;
   }

}

共有2个答案

欧阳学真
2023-03-14

我在这方面也面临很多问题。只需编写以下两行代码。它会起作用的。

Cell cell= data.getRow(i).getCell(0);
String orderID1=cell.toString();
满勇军
2023-03-14

据我所知,我们可以通过两种方式实现这一目标。

方法1:在Excel上的数值之前添加撇号(')。例如,如果excel中有1234,则替换为“1234”。添加撇号会将数字转换为字符串

方法2:通过Java处理。例如,做这样的事情,

String value = new String("value read from Excel");

注意:我还没有测试方法2,但它实际上可以工作。

希望这有帮助。谢谢

 类似资料:
  • 我使用的是poi 3.6 我能够正确地创建excel。但当我试图将单元格类型设置为数字时,它总是将单元格类型设置为常规。 i、 e.在新创建的excel中,当我右键单击并转到“格式化单元格”时- 我的代码是这样的 你能告诉我这里缺少什么吗?

  • 我需要将Excel行从一张工作表复制到另一张工作表。但是在复制而不是实际值之后,我得到了不同的值。有字符串值的单元格没有问题,但有数值的单元格没有问题。Excel单元格可以包含任何类型的值。我的代码应该接受所有这些内容,并将它们复制到另一张表中。请帮我解决这个问题。 我知道row.get单元格(二)"是转换类型单元格字符串,但我想设置setCellValue接受单元格,可以有任何类型的数据(例如:

  • 问题内容: 我有这样的内容的Excel文件: A1:SomeString A2:2 所有字段均设置为字符串格式。 当我使用POI读取Java中的文件时,它表明A2为数字单元格格式。 问题在于A2中的值可以是2或2.0(并且我希望能够区分它们),所以我不能只使用.toString()。 如何将值读取为字符串? 问题答案: 当您提出问题时,我认为我们没有上过这堂课,但是今天有一个简单的答案。 您要做的

  • 问题内容: 我正在使用Apache POI库读取Excel文件。我在读取密码单元时被卡住了。如果用户在密码单元格中输入日期作为密码,即16/05/2012。我正在将此值读取为“ 41045”,而该值应为“ 16/05/2012”。这是我的代码: 有人可以帮忙吗? 谢谢。 问题答案: 您在POI中寻找的类是DataFormatter 当Excel写入文件时,某些单元格将存储为文字字符串,而另一些单元