爲什麼不能'使用Apache POI(3.16)'正確'隱藏Excel行?可以調用(XSSFRow)row.setZeroHeight(),這也是Busy developer's guide推薦的內容。但是,這與Excel做它的方式不同。您可以使用相應的上下文菜單選項「隱藏」和「取消隱藏」行。爲什麼不能使用Apache POI'正確'隱藏Excel行?
我認爲設置行風格應該可行,但事實並非如此。在生成的Excel文件中,行仍然可以看到。
package de.mwe;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.testng.Assert;
import org.testng.annotations.Test;
public class MWE {
@Test
public void testHidingRows() {
final XSSFWorkbook wb = new XSSFWorkbook();
String sname = "HideRowsTestSheet", cname = "TestName", cvalue = "TestVal";
XSSFSheet sheet = wb.createSheet(sname);
XSSFRow row = sheet.createRow(0);
XSSFCell cell = row.createCell((short) 0);
cell.setCellValue(cvalue);
XSSFCellStyle hiddenRowStyle = wb.createCellStyle();
hiddenRowStyle.setHidden(true);
row.setRowStyle(hiddenRowStyle);
Assert.assertTrue(row.getRowStyle().getHidden());
try (FileOutputStream fileOut = new FileOutputStream(new File("target/PoiTestDrive.xlsx"))) {
wb.write(fileOut);
} catch (IOException ex) {
ex.printStackTrace();
}
// does not work, resulting Excel file shows first row.
}
}
因爲setHidden爲細胞而不是行? – 2017-09-13 11:16:44
[如何在Java中使用Apache Poi取消隱藏隱藏行](https://stackoverflow.com/questions/6923153/how-to-un-hide-a-hidden-row-in -excel-using-apache-poi-in-java) – Nikolas
[Hiding and Un-Hiding Rows](http://poi.apache.org/spreadsheet/quick-guide.html#Hiding)是正確的,但必須是'row.setZeroHeight(true);'用於隱藏一行。 [Row.setZeroHeigh](https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Row.html#setZeroHeight(布爾值))確實是Excel在隱藏行時所做的。對於'XSSF'只需設置隱藏屬性,請參閱https://svn.apache.org/viewvc/poi/tags/REL_3_16_FINAL/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRow.java?view =標記#l423 –