我在apache poi上遇到了一个奇怪的问题
我正在使用apache POI3.17创建一个Excel文件。如果我设置了字体颜色,那么生成的excel文件不是用最新的MS Office excel viewer打开的,而是用Libre Office和Mac OS Numbers应用程序打开的。
但是如果我注释掉'urlFont.setColor((short)color.black.getrgb())'行,那么生成的文件将用Ms Office Excel viewer(以及其他应用程序)打开。
有人面对这个问题吗?
import org.apache.poi.common.usermodel.HyperlinkType;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Hyperlink;
import org.apache.poi.xssf.usermodel.*;
import java.awt.*;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class WriteExcelBasic {
public static void main(String[] args) throws IOException {
String excelFileName = "/Users/home/Test3.xlsx";
FileOutputStream fos = new FileOutputStream(excelFileName);
XSSFWorkbook wb = new XSSFWorkbook();
XSSFCellStyle style = wb.createCellStyle();
XSSFSheet sheet = wb.createSheet("sheet");
Font urlFont = wb.createFont();
urlFont.setFontHeight((short)(9*20));
// urlFont.setUnderline((byte)10);
//urlFont.setBold(true);
urlFont.setFontName("Arial");
urlFont.setItalic(true);
urlFont.setColor((short)Color.BLACK.getRGB());// commenting out this line will work
style.setFont(urlFont);
for (int r = 0; r < 3; r++) {
XSSFRow row = sheet.createRow(r);
for (int c = 0; c < 3; c++) {
XSSFCell cell = row.createCell(c);
Hyperlink link = wb.getCreationHelper().createHyperlink(HyperlinkType.URL);
String ss = "http://news.google.com/news/headlines?ned=us&hl=en";
//String ss = "swasdqde";
link.setAddress(ss);
cell.setHyperlink(link);
cell.setCellValue(ss);
if(r == 1) {
System.out.println("In yellow");
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
style.setFillForegroundColor(new XSSFColor(Color.YELLOW));
} else {
System.out.println("In red");
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
style.setFillForegroundColor(new XSSFColor(Color.RED));
}
cell.setCellStyle(style);
}
}
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
wb.write(baos);
byte[] myByteArray = baos.toByteArray();
fos.write(myByteArray);
fos.flush();
}
finally {
wb.close();
fos.close();
}
}
}
我将字体更改为XSFFFont,并在该字体中使用了XSSFCOLOR,它起作用了。
import org.apache.poi.common.usermodel.HyperlinkType;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Hyperlink;
import org.apache.poi.xssf.usermodel.*;
import java.awt.*;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class WriteExcelBasic {
public static void main(String[] args) throws IOException {
String excelFileName = "/Users/home/Test3.xlsx";
FileOutputStream fos = new FileOutputStream(excelFileName);
XSSFWorkbook wb = new XSSFWorkbook();
XSSFCellStyle style = wb.createCellStyle();
XSSFSheet sheet = wb.createSheet("sheet");
XSSFFont urlFont = wb.createFont();// changed lines
urlFont.setFontHeight((short)(9*20));
// urlFont.setUnderline((byte)10);
//urlFont.setBold(true);
urlFont.setFontName("Arial");
urlFont.setItalic(true);
urlFont.setColor(new XSSFColor(Color.BLUE)); // changed lines
style.setFont(urlFont);
for (int r = 0; r < 3; r++) {
XSSFRow row = sheet.createRow(r);
for (int c = 0; c < 3; c++) {
XSSFCell cell = row.createCell(c);
Hyperlink link = wb.getCreationHelper().createHyperlink(HyperlinkType.URL);
String ss = "http://news.google.com/news/headlines?ned=us&hl=en";
//String ss = "swasdqde";
link.setAddress(ss);
cell.setHyperlink(link);
cell.setCellValue(ss);
if(r == 1) {
System.out.println("In yellow");
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
style.setFillForegroundColor(new XSSFColor(Color.YELLOW));
} else {
System.out.println("In red");
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
style.setFillForegroundColor(new XSSFColor(Color.RED));
}
cell.setCellStyle(style);
}
}
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
wb.write(baos);
byte[] myByteArray = baos.toByteArray();
fos.write(myByteArray);
fos.flush();
}
finally {
wb.close();
fos.close();
}
}
}
作为我工作的一部分,我一直在制作python脚本,这些脚本读取各种格式(例如Excel、Csv、Txt)的输入,并将信息解析为更标准化的文件。这不是我第一次打开或使用Excel文件。 有一个特殊的文件给我带来了问题,我只是打不开它。当我尝试使用xlrd(版本0.9.3)时,它给了我以下错误: XLRDERROR:不支持的格式,或损坏的文件:BOF不是工作簿/工作表:OP=0x0009 vers=0
颜色 主导颜色 灰阶 字体 字体字号 图标 气泡菜单 组件内容 基础形态 容器 操作选项 选择浮层 顶部浮层 底部浮层 侧边浮层 示例 布局 标签选项 <!-- # 顶部导航栏 原生顶部导航栏 示例 个性定制 示例 --> Toast 单行展示 双行展示 状态提示 Dialog 弹窗属性 页面示例 Snackbar <!-- # 结果页面 布局 页面示例 组成结构 --> 布局 页面示例 类型 页
本文向大家介绍Android开发改变字体颜色方法,包括了Android开发改变字体颜色方法的使用技巧和注意事项,需要的朋友参考一下 在TextView中添加文本时有时会改变一些文本字体的颜色,今天主要分享三种实现方法及相关优缺点。 1、通过html标签改变文本颜色 点评:通过Html.fromHtml()方法就可以在字符串中使用html的标签,通过font标签可以改变字体的格式。麦子学院-国内最专
我有cv2的问题。我的代码中的CVT颜色: 错误: 我已经测试过它之前,我导入我的图像已经灰度与"img=cv2.imread(image_path)",然后部分与hsv...它工作得很好,但是现在我用“cv2”拍摄了一张屏幕截图,并尝试了灰度。COLOR_BGR2GRAY"我得到上面这个错误。当我删除该行,我不会得到任何错误,但图像不是我想要的阈值。因此,在我的代码继续使用hsv之前,必须将图像
我有一个文件,它不像文件那样突出显示关键字和标签。我试着去
问题内容: 是否有CSS属性可根据以下图片反转相关内容? 问题答案: 有一个CSS属性叫做mix-blend-mode,但是IE不支持。我建议使用伪元素。如果您想支持IE6和IE7,则还可以使用两个DIV代替伪元素。