我有这样的内容的excel文件:
A1:SomeString
A2:2
所有字段都设置为String格式.
当我使用POI在java中读取文件时,它告诉A2是数字单元格格式.
.toString().如何将值读取为字符串?
我正在引用Apache POI的3.7版本,当我这样做时,我收到了"无法解决"的错误:
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
Run Code Online (Sandbox Code Playgroud)
引用POI的其他import语句不会给我错误,例如:
import org.apache.poi.ss.usermodel.*;
Run Code Online (Sandbox Code Playgroud)
有任何想法吗??
我已经使用Apache POI一段时间以编程方式读取现有的Excel 2003文件.现在我有了一个新的要求,即在内存中创建整个.xls文件(仍使用Apache POI),然后将它们写入文件末尾.阻碍我的唯一问题是处理带日期的细胞.
请考虑以下代码:
Date myDate = new Date();
HSSFCell myCell;
// code that assigns a cell from an HSSFSheet to 'myCell' would go here...
myCell.setCellValue(myDate);
Run Code Online (Sandbox Code Playgroud)
当我将包含此单元格的工作簿写入文件并使用Excel打开时,单元格显示为数字.是的,我确实认识到Excel将其"日期"存储为自1900年1月1日以来的天数,这就是单元格中的数字所代表的数字.
问题:我可以在POI中使用哪些API调用来告诉它我需要将默认日期格式应用于我的日期单元格?
理想情况下,如果用户在Excel中手动打开电子表格并键入Excel识别为日期的单元格值,我希望电子表格单元格显示的Excel默认日期格式与Excel分配的格式相同.
哪两个API更易于读/写/编辑Excel工作表?这些API不支持CSV扩展吗?
使用JXL for file.xls和file.xlsx,我得到一个例外:
jxl.read.biff.BiffException: Unable to recognize OLE stream
at jxl.read.biff.CompoundFile.<init>(CompoundFile.java:116)
at jxl.read.biff.File.<init>(File.java:127)
at jxl.Workbook.getWorkbook(Workbook.java:268)
at core.ReadXLSheet.contentReading(ReadXLSheet.java:46)
at core.ReadXLSheet.init(ReadXLSheet.java:22)
at core.ReadXLSheet.main(ReadXLSheet.java:72)
Run Code Online (Sandbox Code Playgroud)
两者都用于.xls和.xlsx扩展.我使用的Java版本是:JDK1.6
我Apache POI API用来生成excel spreadsheet输出一些数据.
我面临的问题是,在创建和打开电子表格时,不会扩展列,以便乍一看不会出现像Date格式化文本这样的长文本.
我可以双击excel中的列边框来展开或拖动边框来调整列宽,但可能有20多列,每次打开电子表格时我都无法手动执行此操作:(
我发现了(虽然可能是错误的方法)groupRow()并且setColumnGroupCollapsed()可能能够做到这一点,但没有运气.也许我错误地使用它.
示例代码段
Workbook wb = new HSSFWorkbook();
CreationHelper createHelper = wb.getCreationHelper();
//create sheet
Sheet sheet = wb.createSheet("masatoSheet");
//not really working yet.... :(
//set group for expand/collapse
//sheet.groupRow(0, 10); //just random fromRow toRow argument values...
//sheet.setColumnGroupCollapsed(0, true);
//create row
Row row = sheet.createRow((short)0);
//put a cell in the row and store long text data
row.createCell(0).setCellValue("Loooooooong text not to show up first");
Run Code Online (Sandbox Code Playgroud)
创建此电子表格时,"Looooooong text not to first up …
有没有人熟悉在Apache POI 3.7创建的电子表格中锁定行的方法?通过锁定,我的意思是当用户滚动行时,我希望列的标题行保持可见.我创建的电子表格将有500行,如果列的名称始终可见,将会很有用.
有没有其他方法可以使用Apache POI库在Excel中合并单元格?
我正在尝试使用以下内容,但它不起作用
// selecting the region in Worksheet for merging data
CellRangeAddress region = CellRangeAddress.valueOf("A" + rowNo + ":D"
+ rowNo);
// merging the region
sheet1.addMergedRegion(region);
Run Code Online (Sandbox Code Playgroud) 我正在使用Apache POI 3.6,我想阅读一个excel文件,其中包含这样的日期8/23/1991.
switch (cell.getCellType()) {
...
...
case HSSFCell.CELL_TYPE_NUMERIC:
value = "NUMERIC value=" + cell.getNumericCellValue();
break;
...
}
Run Code Online (Sandbox Code Playgroud)
但它采用数值类型并返回这样的值33473.0.
我试过使用数字细胞类型虽然没有运气.
dbltemp=row.getCell(c, Row.CREATE_NULL_AS_BLANK).getNumericCellValue();
if (c == 6 || c == 9) {
strTemp= new String(dbltemp.toString().trim());
long tempDate = Long.parseLong(strTemp);
Date date = new Date(tempDate);
strVal = date.toString();
}
Run Code Online (Sandbox Code Playgroud)
我该如何解决我的问题?
我正在尝试使用Excel中的电子表格中的数据,但总是出现此错误,已尝试将工作表格式化为文本和数字,但错误仍然存在.
我看到一个人使用它解决cell.setCellType ( Cell.CELL_TYPE_STRING ) ;但我不知道我的代码在哪里适合这段.
WebElement searchbox = driver.findElement(By.name("j_username"));
WebElement searchbox2 = driver.findElement(By.name("j_password"));
try {
FileInputStream file = new FileInputStream(new File("C:\\paulo.xls"));
HSSFWorkbook workbook = new HSSFWorkbook(file);
HSSFSheet sheet = workbook.getSheetAt(0);
for (int i=1; i <= sheet.getLastRowNum(); i++){
String j_username = sheet.getRow(i).getCell(0).getStringCellValue();
String j_password = sheet.getRow(i).getCell(0).getStringCellValue();
searchbox.sendKeys(j_username);
searchbox2.sendKeys(j_password);
searchbox.submit();
driver.manage().timeouts().implicitlyWait(10000, TimeUnit.MILLISECONDS);
}
workbook.close();
file.close();
} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
Run Code Online (Sandbox Code Playgroud) 我正在使用Apache POI API编写一个Java工具,将XML转换为MS Excel.在我的XML输入中,我以磅为单位接收列宽.但Apache POI API有一个稍微奇怪的逻辑,用于根据字体大小等设置列宽(请参阅API文档)
是否存在将点转换为Excel预期宽度的公式?有没有人这样做过?
setRowHeightInPoints()虽然有一种方法:(但没有列.
PS:输入XML是ExcelML格式,我必须转换为MS Excel.