java-POI Excel:获取样式名称
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-POI Excel:获取样式名称,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2267字,纯文字阅读大概需要4分钟。
内容图文
![java-POI Excel:获取样式名称](/upload/InfoBanner/zyjiaocheng/680/3a63b4536ed742dfb74c9e9133d02c22.jpg)
我想读取给应用于xlsx文档中单元格的样式的名称.
我已经提取了文件,并且在xl / styles.xml中可以找到样式名称:
<cellStyles count="3">
<cellStyle xfId="2" builtinId="7" name="Currency [0]"/>
<cellStyle xfId="0" builtinId="0" name="Normal"/>
<cellStyle xfId="1" name="test style"/>
</cellStyles>
我想要的样式名称是“测试样式”.目前,我有以下代码,并且我可以获取xfId而不是名称:
@Override
public String getName(Workbook table, XSSFCell cell, String value) {
XSSFCellStyle cellStyle = cell.getCellStyle();
CellColor cellColor = new CellColor(cellStyle);
int xfId = cellStyle.getCoreXf().getFillId();
//todo: fint name, not xfId
return null;
}
有谁知道我是否可以用poi来获得样式名称,以及我将如何进行?
如果这不可能,那么我可以基于xfId将背景颜色设为rgb吗?
问候
解决方法:
经过大量的挖掘,我找到了解决方案.我想我会在这里分享.我仍然没有找到样式的名称.但是我已经找到一种获得颜色的方法.
CellStyle有一个xf对象,该对象保存了所用填充的参考索引.您可以从“工作簿样式表”中获取填充.
填充根据颜色是不同的来引用颜色.它只是具有您可以解析的rgb字符串,或者具有主题ID和色调值.
您可以像填充一样从StylesTable中获取主题.并且该主题具有rgb值.我不确定如何应用色调,但是在我的测试中并没有必要.
private int red;
private int green;
private int blue;
public void loadRgb(XSSFWorkbook table, XSSFCellStyle variableStyle) {
long fillId = variableStyle.getCoreXf().getFillId();
StylesTable stylesSource = table.getStylesSource();
XSSFCellFill fill = stylesSource.getFillAt((int) fillId);
CTColor fgColor = fill.getCTFill().getPatternFill().getFgColor();
if (fgColor != null) {
if (fgColor.xgetRgb() != null) {
convert(fgColor.xgetRgb().getStringValue());
} else {
convert(stylesSource.getTheme().getThemeColor((int) fgColor.getTheme()).getRgb());
}
}
}
private void convert(String stringValue) {
// the string value contains an alpha value, so we skip the first 2 chars
red = Integer.valueOf(stringValue.substring(2, 4), 16).intValue();
green = Integer.valueOf(stringValue.substring(4, 6), 16).intValue();
blue = Integer.valueOf(stringValue.substring(6, 8), 16).intValue();
}
private void convert(byte[] rgb) {
if (rgb != null) {
// Bytes are signed, so values of 128+ are negative!
// 0: red, 1: green, 2: blue
red = (rgb[0] < 0) ? (rgb[0] + 256) : rgb[0];
green = (rgb[1] < 0) ? (rgb[1] + 256) : rgb[1];
blue = (rgb[2] < 0) ? (rgb[2] + 256) : rgb[2];
}
}
内容总结
以上是互联网集市为您收集整理的java-POI Excel:获取样式名称全部内容,希望文章能够帮你解决java-POI Excel:获取样式名称所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。