Del*_*yer 3 java excel xlsx apache-poi xssf
晚上好!我在使用apache poi v.3.14时遇到了一些麻烦,当我使用Libreoffice或Excel打开渲染的xlsx时,样式未正确应用.
我有这个代码:
class... {
private XSSFCellStyle doubleLockStyle;
/**
* Create default cell style.
*
* @param myWorkBook
* @return The cell style.
*/
private XSSFCellStyle createCell(XSSFWorkbook myWorkBook, boolean locked) {
XSSFCellStyle cs = myWorkBook.createCellStyle();
cs.setAlignment(HorizontalAlignment.CENTER);
if (locked) {
cs.setFillBackgroundColor(LOCKED_COLOR); //rgb from awt colors
cs.setFillPattern(FillPatternType.SOLID_FOREGROUND);
cs.setLocked(true);
} else {
cs.setLocked(false);
}
return cs;
}
/**
* Prepare cell styles.
*
* @param myWorkBook
*/
private void initStyles(XSSFWorkbook myWorkBook) {
...
short df = myWorkBook.createDataFormat().getFormat("0.00");
doubleLockStyle = createCell(myWorkBook, true);
doubleLockStyle.setDataFormat(df);
...
}
private void writeSheet(XSSFWorkbook myWorkBook, CalendarValueType type, Date startDate, Date endDate) {
...
cell.setCellStyle(doubleLockStyle);
...
}
}
Run Code Online (Sandbox Code Playgroud)
工作表设置为已锁定.输出不显示背景颜色,也不锁定单元格.我无法弄清楚问题是什么.我也试图看看它是否是一个已知的错误,但事实并非如此.有人有同样的问题吗?如果我将背景填充图案更改为斜线,则单元格会锁定,但Excel和Libre office之间的背景不正确.谢谢!
jma*_*phy 10
背景颜色的问题是颜色有点不直观.单元格有三种颜色,一种用于字体,两种用于填充.填充是大多数人称之为细胞背景的.它实现为填充图案,并具有前景颜色和背景颜色.使用实心填充时:
cs.setFillPattern(FillPatternType.SOLID_FOREGROUND);
Run Code Online (Sandbox Code Playgroud)
使用的唯一颜色是填充前景色,您可以使用以下方法设置:
cs.setFillForegroundColor(LOCKED_COLOR);
Run Code Online (Sandbox Code Playgroud)
您使用了填充背景颜色,使用实心填充图案时不可见.
要使锁定单元格工作,您必须通过以下方式启用表单保护:
Sheet.protectSheet(password)
Run Code Online (Sandbox Code Playgroud)
您必须设置密码,如果密码是,null则禁用保护.您可以使用以下命令删除密码:
Sheet.setSheetPassword(null, null);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3528 次 |
| 最近记录: |