一、这是简单生成excel表格 :
主要用到以下几个类和方法:
1.WriterableWorkbook: 通过Workbook.createdWorkbook()静态方法创建出来。 其作用是相当于excel软件界面。
2.WriterableSheet: 通过WritableWorkbook.createSheet()方法创建出来。 其作用相当于excel表格的页
3.Label: 控制数据插入在表格的哪一行 new Label(0, 0, "学校")。 第一个参数为表格的列,第二个参数为表格的行数(表格是以 0,0 坐标为起始点) 第三个参数为插入内容
4.用WritableSheet.addCell(Label label)方法为表格插入内容。
5.把创建的内容写入到输出流中,并关闭输出流: workbook.write(); workbook.close(); os.close();
二、这是生成复杂的数据类型的excel表格。
以下为几个数据类型的说明:
1.Label:文本类型的类
2.Number:数字类型的类(包括int float double)
3.Boolean:布尔类型的类
4.DateTime:时间类型(将表格制作成时间格式的需要用到new WritableCellFormat(DateFormats.FORMAT1)这个对象加入到DataTime里面)
三、使用模版生成新的excel表
使用步骤:
1.Workbook wb = Workbook.getWorkbook(new File("D:/干部个人信息采集表.xls"));//选择模版文件
2.WritableWorkbook workbook = Workbook.createWorkbook(os,wb);//导入模版
3.使用简单的坐标定位,对表格进行操作
四、附上最终代码(java代码)
生成复杂多样的excel表
* @param os
* @throws WriteException
* @throws IOException
*/
public void MutiStyleExcelWrite(OutputStream os) throws WriteException,IOException
{
//创建工作薄
WritableWorkbook workbook = Workbook.createWorkbook(os);
//创建新的一页
WritableSheet sheet = workbook.createSheet("First Sheet", 0);
//构建表头
sheet.mergeCells(0, 0, 21, 0);//添加合并单元格,第一个参数是起始列,第二个参数是起始行,第三个参数是终止列,第四个参数是终止行
//设置字体种类和黑体显示,字体为Arial,字号大小为10,采用黑体显示
WritableFont bold = new WritableFont(WritableFont.ARIAL,20,WritableFont.BOLD);
//生成一个单元格样式控制对象
WritableCellFormat titleFormate = new WritableCellFormat(bold);
//单元格中的内容水平方向居中
titleFormate.setAlignment(jxl.format.Alignment.CENTRE);
//单元格的内容垂直方向居中
titleFormate.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
Label title = new Label(0,0,"干部个人信息采集表",titleFormate);
//设置第一行的高度
sheet.setRowView(0, 600, false);
sheet.addCell(title);
//创建要显示的具体内容
sheet.mergeCells(0, 1, 21, 1);
WritableCellFormat datetime = new WritableCellFormat(bold);
datetime.setAlignment(jxl.format.Alignment.RIGHT);
datetime.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
Label date = new Label(0,1,"填表日期: 年 月 日",datetime);
sheet.setRowView(0, 900, false);
sheet.addCell(date);
//第三行内容
sheet.mergeCells(0, 2, 1, 2);
Label name = new Label(0,2,"姓名");
sheet.addCell(name);
Label sex = new Label(2,2,"性别");
sheet.addCell(sex);
Label nation = new Label(3,2,"民族");
sheet.addCell(nation);
sheet.mergeCells(4, 2, 5, 2);
Label originPlace = new Label(4,2,"籍贯");
sheet.addCell(originPlace);
sheet.mergeCells(6, 2, 7, 2);
Label brithPlace = new Label(6,2,"出生地");
sheet.addCell(brithPlace);
sheet.mergeCells(8, 2, 9, 2);
Label brithDay = new Label(8,2,"出生日期");
sheet.addCell(brithDay);
sheet.mergeCells(10, 2, 11, 2);
Label armyDate = new Label(10,2,"入伍年月");
sheet.addCell(armyDate);
sheet.mergeCells(12, 2, 13, 2);
Label organizationDate = new Label(12,2,"入党年月");
sheet.addCell(organizationDate);
sheet.mergeCells(14, 2,15, 2);
Label politicalOutlook = new Label(14,2,"政治面貌");
sheet.addCell(politicalOutlook);
sheet.mergeCells(16, 2, 21, 6);
Label photo = new Label(16,2,"照片");
sheet.addCell(photo);
//开始第四行内容
sheet.mergeCells(0, 3, 1, 3);
sheet.mergeCells(4, 3, 5, 3);
sheet.mergeCells(6, 3, 7, 3);
sheet.mergeCells(8, 3, 9, 3);
sheet.mergeCells(10, 3, 11, 3);
sheet.mergeCells(12, 3, 13, 3);
sheet.mergeCells(14, 3,15, 3);
//第五行内容
sheet.mergeCells(0, 4, 1, 4);
Label identity = new Label(0,4,"个人身份");
sheet.addCell(identity);
sheet.mergeCells(2, 4, 7, 4);
sheet.mergeCells(8, 4, 9, 4);
Label ID = new Label(8,4,"身份证号码");
sheet.addCell(ID);
sheet.mergeCells(10, 4, 15, 4);
//第六行内容
// 把创建的内容写入到输出流中,并关闭输出流
workbook.write();
workbook.close();
os.close();
}
/**
* 使用模版生成新的excel表
* @param os
* @throws WriteException
* @throws IOException
*/
public void templateExcelWriter(OutputStream os) throws WriteException,IOException
{
try {
Workbook wb = Workbook.getWorkbook(new File("D:/干部个人信息采集表.xls"));//选择模版文件
WritableWorkbook workbook = Workbook.createWorkbook(os,wb);//导入模版
WritableSheet sheet = workbook.getSheet(0);
System.out.println("名字:"+sheet.getName());
Label A1 = new Label(0,3,"侯建洪");
sheet.addCell(A1);
workbook.write();
workbook.close();
os.close();
} catch (BiffException e) {
e.printStackTrace();
}
}