如何将该值作为字符串而不是数字从单元格中获取?下面给出了读取和编写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;
}
}
我在这方面也面临很多问题。只需编写以下两行代码。它会起作用的。
Cell cell= data.getRow(i).getCell(0);
String orderID1=cell.toString();
据我所知,我们可以通过两种方式实现这一目标。
方法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写入文件时,某些单元格将存储为文字字符串,而另一些单元