不知何故,我设法在现有的excel文件中的两行之间创建新行.问题是,一些格式化不包括行的移位.
其中之一就是隐藏的行在转换期间不是相对的.我的意思是(例如),隐藏了20到30行,但是当创建新行时,仍然存在格式化.隐藏的行也必须在插入/创建新行期间移动,它应该是21到31.
另一件事是,工作表中的另一个对象不在单元格中.在创建新行之后,文本框不会移动.它就像这些物体的位置是固定的.但我希望它移动,就像我在excel中插入新行或粘贴行一样.如果有插入新行的功能,请告诉我.
这就是我现在所拥有的,只是我代码中的一个片段.
HSSFWorkbook wb = new HSSFWorkbook(template); //template is the source of file
HSSFSheet sheet = wb.getSheet("SAMPLE");
HSSFRow newRow;
HSSFCell cellData;
int createNewRowAt = 9; //Add the new row between row 9 and 10
sheet.shiftRows(createNewRowAt, sheet.getLastRowNum(), 1, true, false);
newRow = sheet.createRow(createNewRowAt);
newRow = sheet.getRow(createNewRowAt);
Run Code Online (Sandbox Code Playgroud)
如果可以复制和粘贴行,那将是很大的帮助.但是我已经在这里问过它并且找不到解决方案.所以我决定创建一个行作为临时解决方案.我已经完成了它,但有这样的问题.
任何帮助都感激不尽.谢谢!
我正在使用POI在Java中创建Excel电子表格.我有以下代码用于创建标题行:
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("Report");
// some more code
HSSFRow row = sheet.createRow(0);
HSSFCell cell = row.createCell(cellNumber);
HSSFCellStyle cellStyle = wb.createCellStyle();
cellStyle.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index);
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
HSSFFont font = wb.createFont();
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
font.setColor(HSSFColor.WHITE.index);
cellStyle.setFont(font);
cell.setCellStyle(cellStyle);
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,无论我选择什么颜色,在单元格上设置填充背景颜色总是黑色.我究竟做错了什么?如果我不使用"setFillPattern"行,则根本不显示任何颜色.
伙计我目前正在使用POI 3.9库来处理excel文件.我知道这个getLastRowNum()
函数,它在Excel文件中返回许多行.
唯一的问题是getLastRowNum()
返回一个从0开始计数的数字.
因此,如果Excel文件使用前3行,则getLastRowNum()
返回2.如果Excel文件只有1行,则getLastRowNum()
返回0.
Excel文件完全为空时会发生此问题.getLastRowNum()
仍然返回0,所以我无法确定Excel文件是否有1行数据,或者它是否为空.
那么如何检测Excel文件是否为空?
我正在使用POI HSSF API进行Java中的excel操作.我在我的一个excel单元格中有一个日期值"8/1/2009",当我尝试使用HSSF API读取该值时,它会将单元格类型检测为Numeric并返回我的日期的"Double"值.请参阅以下示例代码:
cell = row.getCell(); // date in the cell '8/1/2009'
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_STRING:
cellValue = cell.getRichStringCellValue().getString();
break;
case HSSFCell.CELL_TYPE_NUMERIC:
cellValue = new Double(cell.getNumericCellValue()).toString();
break;
default:
}
Run Code Online (Sandbox Code Playgroud)
Cell.getCellType()返回NUMERIC_TYPE,因此此代码将日期转换为double!:(
有没有办法在HSSF POI中读取日期!
我正在使用Apache的POI来使用Java操作Excel(.xls)文件.
我正在尝试创建一个新的单元格,其内容是公式的结果,就像用户复制/粘贴公式一样(我称之为"相对"方式,与"绝对"相反).
为了使自己更清楚,这里有一个简单的例子:Cell A1包含"1",B1包含"2",A2包含"3",B2包含"4".单元格A3包含以下公式"= A1 + B1".如果我将公式复制到excel下的A4单元格,它将变为"= A2 + B2":excel正在动态调整公式的内容.
不幸的是,我无法以编程方式获得相同的结果.我找到的唯一解决方案是将公式标记化并自己完成脏工作,但我真的怀疑这应该是这样做的.我无法在指南或API中找到我想要的内容.
有没有更简单的方法来解决这个问题?如果是这样的话,请指点我正确的方向吗?
最好的祝福,
尼尔斯
我正在使用HSSF-POI来读取Excel数据.问题是我在单元格中的值看起来像一个数字,但实际上是字符串.如果我在Excel中查看格式单元格,则表示类型为"text".HSSF Cell仍然认为它是数字的.如何将值作为字符串获取?
如果我尝试使用cell.getRichStringValue
,我会得到例外; 如果cell.toString
,它与Excel表格中的值不完全相同.
编辑:直到这个解决,我会用
new BigDecimal(cell.getNumericCellValue()).toString()
Run Code Online (Sandbox Code Playgroud) 我必须从Excel文件中删除一张表.
这是我的代码片段:
FileInputStream fileStream = new FileInputStream(destFile);
POIFSFileSystem fsPoi = new POIFSFileSystem(fileStream);
HSSFWorkbook workbook = new HSSFWorkbook(fsPoi);
int index = 0;
HSSFSheet sheet = workbook.getSheet("Setup");
if(sheet != null) {
index = workbook.getSheetIndex(sheet);
workbook.removeSheetAt(index);
}
return destFile;
Run Code Online (Sandbox Code Playgroud)
在此之后,我得到了完全相同的工作簿,而没有删除工作表 "设置"
帮我解决这个问题.任何帮助,将不胜感激
我正在使用hssf api从xls文件中读取数据.但有没有办法得到确切的号码.包含存储数据的工作簿中的工作表?
HSSFWorkbook vs XSSFWorkbook以及XSSFWorkbook和SXSSFWorkbook的优缺点?
我正在使用apache poi 3.7,我需要将边框放到一系列单元格或合并区域.
当工作表和工作簿类型为XSSF时,如何将边框应用于合并区域.在HSSF类型中,我使用RegionUtil-/HSSFRegionutil,但是如果在XSSF类型中使用第一个对象(Regionutil),则它不起作用并将黑色背景颜色放入单元格范围.
Regionutil通常使用CellRangeAddress,我找不到有关此问题的信息.我不知道CellRangeAddres是否会导致这种情况.