只有当我将样式应用到单元格时,我才会得到错误消息。
import java.io.File;
import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
public class Test {
public static void main(String[] args) throws Exception {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = null;
HSSFDataFormat dtFormat = wb.createDataFormat();
HSSFRow row_data = null;
HSSFCell cell_data = null;
HSSFCellStyle style = null;
HSSFCellStyle styleSubHeader = null;
HSSFCellStyle styleLeft = null;
HSSFCellStyle styleCentre = null;
HSSFCellStyle styleBRData = null;
HSSFCellStyle styleRight = null;
HSSFCellStyle styleRPrec = null;
HSSFCellStyle styleBold = null;
HSSFCellStyle styleBRight = null;
HSSFCellStyle styleBRPrec = null;
HSSFCellStyle styleBLeftHead = null;
HSSFCellStyle styleBLeft = null;
HSSFCellStyle styleBCentre = null;
HSSFCellStyle styleRRight = null;
HSSFCellStyle styleSubTitle = null;
HSSFFont headBold = null;
HSSFFont titleBold = null;
HSSFDataFormat dtFmt = null;
HSSFCellStyle styleCenter = wb.createCellStyle();
HSSFFont fontCenter = wb.createFont();
HSSFFont font = wb.createFont();
HSSFFont fontBold = wb.createFont();
HSSFFont fontsubTitle = wb.createFont();
FileOutputStream out = new FileOutputStream(new File("sample.xls"));
try {
styleSubTitle = wb.createCellStyle();
sheet = wb.createSheet("Pricing Report");
row_data = sheet.createRow(sheet.getLastRowNum());
style = wb.createCellStyle();
style.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
style.setBorderBottom(HSSFColor.TAN.index);
style.setBorderLeft(HSSFColor.TAN.index);
style.setBorderRight(HSSFColor.TAN.index);
style.setBorderTop(HSSFColor.TAN.index);
cell_data = row_data.createCell((short) 0);
cell_data.setCellValue("Header 1");
cell_data.setCellStyle(styleSubTitle);
cell_data.setCellStyle(style);
wb.write(out);
out.close();
System.out.println("Excel Generated");
} catch (Exception e) {
e.printStackTrace();
}
}
}
所以你只是另一个使用古老版本的ApachePOI的用户。我建议您使用最新的稳定版本3.17
,而不是6年前的3.9
。
所以对于所有稍后会发现这一点的人来说:这段代码使用的是apache poi
version3.10
或更低版本,在当前版本中不会有更多工作。
你期望style.setBorderBottom(HSSFColor. TAN. index);
会做什么?setBorderBottom
会设置边框的厚度。这应该是style.setBorderBottom(HSSFCellStyle.BORDER_THICK);
例如在您的版本中。边框颜色的设置将是style.setBottomBorderColor(HSSFColor. TAN. index);
。
这就是问题所在。int
HSSFColor。棕褐色的索引
是0x2f
,这是不允许的边界厚度。这就是为什么Excel
拒绝将该文件用作安全的Excel
文件的原因。
所以:
...
style = wb.createCellStyle();
style.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
style.setBottomBorderColor(HSSFColor.TAN.index);
style.setLeftBorderColor(HSSFColor.TAN.index);
style.setRightBorderColor(HSSFColor.TAN.index);
style.setTopBorderColor(HSSFColor.TAN.index);
style.setBorderBottom(HSSFCellStyle.BORDER_THICK);
style.setBorderLeft(HSSFCellStyle.BORDER_THICK);
style.setBorderRight(HSSFCellStyle.BORDER_THICK);
style.setBorderTop(HSSFCellStyle.BORDER_THICK);
...
我的: 编辑:我的: 我还尝试添加。 任何帮助都很感激。谢了! ...是的,我已经在配置更改后重新启动了守护进程。:)
问题内容: 我正在尝试在excel中打开一个受密码保护的文件,而无需任何用户交互。我在线搜索,发现此代码使用win32com.client运行此程序时,仍然提示输入密码… 问题答案: 我认为命名参数在这种情况下不起作用。因此,您必须执行以下操作: 有关Workbooks.Open方法的详细信息,请参见http://msdn.microsoft.com/zh- cn/library/office/f
问题内容: 我有一个密码保护Excel文件的问题。 情况是,我有一个zip文件,其中有一个Excel文件。我需要编写一个Java程序,以密码保护Excel文件。因此,用户应该能够解压缩文件(压缩文件无需密码保护)。但是,Excel需要使用密码保护。当用户尝试解压缩文件时,他应该能够解压缩。当他尝试打开Excel文件(位于解压缩的文件夹内)时,它必须要求输入密码。问题类似于使用Java保护excel
问题内容: 我有一个受密码保护的Excel电子表格。我需要打开此电子表格并从中读取数据。我一直在尝试使用POI API无济于事。首选Java解决方案,但任何想法都会有所帮助。 编辑:是的,我有密码。该文件在excel中受密码保护;必须输入密码才能查看电子表格。 Edit2:我无法使用带有密码的POI打开它,我在寻找替代解决方案。 问题答案: 您可以使用JExcelApi。 自从我这样做已经有一段时
我使用Apache POI框架生成了一个xlsx密码保护文件,下面添加了我的代码。然而,我无法使用Excel工具打开生成的文件。我可以使用Plan Maker免费工具打开它。欢迎任何建议。 我有以下jars使用,commons-collections4-4.4.jar,commons-compress-1.20.jar,commons-math3-3.0.jar,poi-4.1.2.jar,poi
问题内容: 我们正在从具有打开保护并已启用写保留保护的客户端获取Excel文件。我想删除保护,因此可以使用python xlrd模块打开Excel文件。我已经安装了pywin32软件包以通过COM访问Excel文件,并且可以使用提供两个密码的程序打开它,保存并关闭文件而不会出现任何错误。我使用的是MSDN网络中所述的Unprotect命令,它们没有失败,但也没有删除保护。程序完成后,保存的文件仍然