先贴代码吧,运行一下,看看效果,然后看看注释,再看看代码后面的基础介绍
创建一个新excel并写入数据:
public static void myExcel2() throws IOException, WriteException { WritableWorkbook wwb = Workbook.createWorkbook(new File("F:" + File.separator + "myExcel1.xls")); // 创建excel表格中的一个sheet项 WritableSheet sheet = wwb.createSheet("第一页", 0); // excel中的cell元素可以有很多种数据类型,比如Number,Label等等 // 在API中,为我们提供了很多的cell类型 // 单元格格式编辑 // 合并单元格式 sheet.mergeCells(0, 0, 5, 0); /* ===========单元格中文字的格式案例============ */ // cell元素中字体(字体格式,颜色,大小的控制) WritableCellFormat forFont = new WritableCellFormat();// 单元格样式对象 WritableFont font = new WritableFont(WritableFont.ARIAL);// 选择字体 font.setColour(Colour.RED);// 颜色 font.setPointSize(20); // 大小 font.setUnderlineStyle(UnderlineStyle.DOUBLE);// 下划线 forFont.setFont(font); // 将字体样式对象添加进入单元格样式对象 forFont.setAlignment(Alignment.CENTRE);// 文字居中 // 创建一个单元格,并指定位置,内容和格式 Label topLabel = new Label(0, 0, "合并单元格,设置字体格式", forFont); // 将创建的单元格对象添加进入sheet页中 sheet.addCell(topLabel); sheet.setRowView(0, 1000); /* ===========单元格中数字的格式化案例============ */ // 创建数字格式化对象 NumberFormat numFormat = new NumberFormat("#.000"); // 创建单元格格式化对象并添加数字格式化对象 WritableCellFormat forNumber = new WritableCellFormat(numFormat); Number myNumber = new Number(0, 1, 3.14159, forNumber); sheet.addCell(myNumber); /* ===========单元格中日期的格式化案例============ */ DateFormat dateFormat = new DateFormat("yyyy-MM-dd"); WritableCellFormat forDate = new WritableCellFormat(dateFormat); forDate.setBackground(Colour.BLUE); // 设置单元格颜色 DateTime myDate = new DateTime(1, 1, new Date(), forDate); sheet.addCell(myDate); // 写入文件 wwb.write(); // 关闭 wwb.close(); }
利用java创建一个全新的Excel文档,通过学习API,我总结的一个流程如下:
1.需要创建一个可以进行写入操作的Workbook对象,即:WritableWorkbook,同时传入参数可以是一个文件输出流,也可以是一个通过File创建的一个对象(参数是文件名),如:
WritableWorkbook wwb = new
WritableWorkbook(new File("myExcel.xls"));
2.创建可编辑的WritableSheet对象,在Excel文档中可以有多个sheet页,第一个sheet指定为0,如:
WritableSheet sheet = wwb.createSheet("sheet1",0);
3.首先,创建一个对应类型的格式化对象,比如
NunberFormat dateformat = new NunberFormat("yyyy-MM-dd")对象
4.然后创建一个Excel单元格格式化对象,并且将上述对应类型格式化对象以参数的方式传递,比如
WritableCellFormat datecellformat = new WritableCellFormat(dateformat);
5.创建单元格对象,设置位置,值,以及指定单元格格式化对象
DateTime mydate = new DateTime(0,0,new Date(),datecellformat);
单元格格式化对象的参数说明:这里以四个参数的构造函数为例进行说明:
第一个参数是列号,第二个参数是行号,第三个参数是值,第四个参数是可选择的,表示格式,
原因是第四个参数可以通过setCellFormat()方法指定格式
6.将创建的单元格对象,添加到sheet中
7.进行写入操作:wwb.write();
8.关闭操作:wwb.close()
特别说明,如果有输出流,不用的时候请关闭输出流
意外发现,java中也有Number,所以,我们在这里请务必导入jsl.write.Number,否则下列语句将报错:
Number myNumber = new Number(0, 1, 3.14159, forNumber);
日期格式参数说明:
yyyy 四位年份 MM 两位月份 dd 两位天 hh 两位小时数字 mm两位分钟数字(大写表示月份)ss 两位秒数
常见格式:
yyyy-MM-dd hh:mm:ss
(中间特殊符号可随意设定,一般可以有“-”,“/”," ")
数字格式化时参数说明:
java中对数字的格式化主要用#和0作为站位符,详细解释如下:
保留整数部分和3位小数:#.000
取2位整数和2位小数:00.00
当整数部分不足时,会补0,缺多少补多少个0
百分制%:即在上述格式后添加一个%符号
#.##%(小数点后的“#”作用等同于“0”)
科学计数法:用E字母,如:00.000E0
数字分割:每三位中间添加一个“,”号
import java.text.DecimalFormat; public class TestNumberFormat { public static void main(String[] args) { double pi = 3.1415927; // 圆周率 // 取一位整数 System.out.println(new DecimalFormat("0").format(pi)); // 3 // 取一位整数和两位小数 System.out.println(new DecimalFormat("0.00").format(pi)); // 3.14 // 取两位整数和三位小数,整数不足部分以 0 填补。 System.out.println(new DecimalFormat("00.000").format(pi)); // 03.142 // 取所有整数部分 System.out.println(new DecimalFormat("#").format(pi)); // 3 // 以百分比方式计数,并取两位小数 System.out.println(new DecimalFormat("#.##%").format(pi)); // 314.16% long c = 299792458; // 光速 // 显示为科学计数法,并取五位小数 System.out.println(new DecimalFormat("#.#####E0").format(c)); // 2.99792E8 // 显示为两位整数的科学计数法,并取四位小数 System.out.println(new DecimalFormat("00.####E0").format(c)); // 29.9792E7 // 每三位以逗号进行分隔。 System.out.println(new DecimalFormat(",###").format(c)); // 299,792,458 // 将格式嵌入文本 System.out.println(new DecimalFormat("光速大小为每秒 ,### 米。").format(c)); } }
未完待续,还有对已存在的文件进行读取和修改操作,以及常见的format参数说明
JAVA Excel API学习案例