Jxl读取模板生成excel时批注没了

Jxl读取模板生成excel时批注没了,第1张

现在来看看如何读取Excel模板然后把动态数据写入到模板以生成特定格式的Excel。

同样的思路,先来考虑下会涉及到那些对象,和上篇文章读取相比这里涉及到一个写入的步骤,所以JXL必然会提供一个对象

来支持写入,这就是WritableWorkbook。那么如何得到到这个类的实例,查看APIDoc发现Workbook类提供了几个

静态的createWorkbook方法返回WritableWorkbook实例,可以看到众多createWorkbook方法主要分为两类:一个参数

和两个参数。简单分析可以得知前者仅仅是用来直接生成Excel文件,后者先读取模板再向模板写入数据然后生成Excel。

(还有一个三参数方法加上一个用来设置workbook的参数)

现在按照上篇文章中所讲述的流程来看看读取模板并写入需要那些步骤。

第一步:选择模板文件:

Workbook wb = Workbook.getWorkbook(new File(realpath))

第二步:通过模板得到一个可写的Workbook:

WritableWorkbook wwb = Workbook.createWorkbook(targetFile, wb)

第一个参数是一个输出流对象,比如可以

ByteArrayOutputStream targetFile = new ByteArrayOutputStream()

这样定义这个输出流对象。第二个参数代表了要读取的模板。

第三步:选择模板中名称为StateResult的Sheet:

WritableSheet wws = wwb.getSheet("StateResult")

如果需要也可以创建Sheet

WritableSheet wws = wwb.createSheet("Sheet名称",i)

第四步:选择单元格,写入动态值,根据单元格的不同类型转换成相应类型的单元格:

Label A1 = (Label)wws.getWritableCell(0,0)

A1.setString("单元格内容")

Number A2 = (Number)wws.getWritableCell(0,1)//Number是jxl.write.Number

A2.setValue(3.3)

也可以创建新的单元格并且加入到Sheet中

Label C1 = new Label(2,0,"单元格内容")

wws.addCell(C1)

Number C1 = new Number(2,0,3.3)

wws.addCell(C1)

在生成Excel报表的时候还会遇到一种需求就是数据的格式问题,我们可能希望数值型单元格以某种格式显示,而字符串型单元格以另

一种格式显示。这些可以通过WritableFont、NumberFormat、WritableCellFormat等实现,下例给单元格A1、A2添加了不同的格式。

java 代码

public static void main(String[] args) throws IOException {

//创建工作簿对象

HSSFWorkbook wb=new HSSFWorkbook()

//创建工作表对象

HSSFSheet sheet=wb.createSheet("我的工作表")

//创建绘图对象

HSSFPatriarch p=sheet.createDrawingPatriarch()

//创建单元格对象,批注插入到4行,1列,B5单元格

HSSFCell cell=sheet.createRow(4).createCell(1)

//插入单元格内容

cell.setCellValue(new HSSFRichTextString("批注"))

//获取批注对象

//(int dx1, int dy1, int dx2, int dy2, short col1, int row1, short col2, int row2)

//前四个参数是坐标点,后四个参数是编辑和显示批注时的大小.

HSSFComment comment=p.createComment(new HSSFClientAnchor(0,0,0,0,(short)3,3,(short)5,6))

//输入批注信息

comment.setString(new HSSFRichTextString("插件批注成功!插件批注成功!"))

//添加作者,选中B5单元格,看状态栏

comment.setAuthor("toad")

//将批注添加到单元格对象中

cell.setCellComment(comment)

//创建输出流

FileOutputStream out=new FileOutputStream("writerPostil.xls")

wb.write(out)

//关闭流对象

out.close()

}

Aspose.cell for Java+Aspose.PDF for Java 可以实现,但是网上Aspose的jar包貌似没破解的,.net的倒挺多.

直接在设置中进行 *** 作,下载安装JDK即可添加。

内容拓展:

一、如何添加jxl的具体步骤如下

1.添加 JAVA HOME

确保你已经安装了JDK,并且在windows环境变量中添加一个”JAVA HOME”,并且指定你的JDK文件夹,如果你只想在计算机的本用户下使用该环境变量,而不是让计算机的所有用户都使用此环境变量,建议你将环境变量添加到用户变量中。

2下载阿帕奇maven

你可以从这里下载maven的压缩包, official website, 例如: apache-maven-2.2.1-bin.zip。

3.解压它

解压下载的压缩文件夹到指定文件夹,比如“D:maven”,注意这是全部的 *** 作,你不需要在windows上进行安装程序。

4.添加 MEAVEN HOME

现在,添加”MAVEN HOME”到windows环境变量中,环境变量的配置本质上其实就是告诉 *** 作系统怎样去定位和使用软件的位置及功能调用。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11261562.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存