下列案例包含基本功能
maven 使用依赖
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>
效果图
package com.panxg.excel;
import jxl.Cell;
import jxl.CellView;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.CellFormat;
import jxl.format.Colour;
import jxl.format.UnderlineStyle;
import jxl.read.biff.BiffException;
import jxl.write.*;
import jxl.write.biff.RowsExceededException;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class excelExport {
public static void main(String[] args) throws Exception {
writeExcel();
}
private static void readExcel() throws IOException, BiffException {
Workbook book = Workbook.getWorkbook(new File("C:\\Users\\86187\\Desktop\\excel表1.xls"));
Sheet[] sheets = book.getSheets();
for (int i = 0; i < sheets.length; i++) {
System.err.println("第"+i+"个sheet:"+book.getSheet(i).getName());
Sheet sheet = book.getSheet(i);
int rows = sheet.getRows();
for (int i1 = 0; i1 < rows; i1++) {
System.out.print("第"+i1+"行:");
Cell[] cells = sheet.getRow(i1);
for (int i2 = 0; i2 < cells.length; i2++) {
System.out.print(cells[i2].getContents()+" ");
}
System.out.println();
}
}
book.close();
}
private static void writeExcel() throws Exception {
File file = createFile("C:\\Users\\86187\\Desktop\\excel表.xls");
OutputStream outputStream = new FileOutputStream(file);
WritableWorkbook writableWorkbook = Workbook.createWorkbook(outputStream);
WritableSheet writableSheet = writableWorkbook.createSheet("第一个sheet页", 0);
writeWorksheet1(writableSheet);
writableSheet = writableWorkbook.createSheet("第二个sheet页", 1);
writeWorksheet2(writableSheet);
writableWorkbook.write();
writableWorkbook.close();
outputStream.close();
}
private static void writeWorksheet1(WritableSheet writableSheet) throws Exception {
WritableCellFormat wcf = getWritableCellFormatCentre(getWritableFontBoldTitle());
writableSheet.addCell(getLabel(0,0,"学习计划表",wcf));
writableSheet.mergeCells(0, 0, 9, 0);
writableSheet.setRowView(0, 600);
wcf = getWritableCellFormatLeft(getWritableFontBoldRedText());
writableSheet.addCell(getLabel(0,1,"注:①可根据当天的学习完成情况针对性指定次日的学习计划;②每天的学习计划行数可自行定义;③E列、G列、I列自动,I列直接填入数字即可",wcf));
writableSheet.mergeCells(0, 1, 9, 0);
wcf = getWritableCellFormatCentreBackage(getWritableFontBoldBlackText());
writableSheet.addCell(getLabel(0,2,"日期",wcf));
writableSheet.setColumnView(0,20);
writableSheet.addCell(getLabel(1,2,"星期",wcf));
writableSheet.setColumnView(1,15);
writableSheet.addCell(getLabel(2,2,"学习科目",wcf));
writableSheet.setColumnView(2,15);
writableSheet.addCell(getLabel(3,2,"计划时间",wcf));
writableSheet.mergeCells(3, 2, 5, 0);
writableSheet.addCell(getLabel(6,2,"时长(H)",wcf));
writableSheet.addCell(getLabel(7,2,"计划学习内容",wcf));
writableSheet.setColumnView(7,20);
writableSheet.addCell(getLabel(8,2,"完成情况(满分100分)",wcf));
writableSheet.addCell(getLabel(9,2,"备注",wcf));
wcf = getWritableCellFormatCentre(getWritableFontBoldBlackText());
writableSheet.addCell(getLabel(0,3,"2020年02月08日",wcf));
writableSheet.mergeCells(0, 3, 0, 8);
writableSheet.addCell(getLabel(1,3,"星期六",wcf));
writableSheet.mergeCells(1, 3, 0, 8);
writableSheet.addCell(getLabel(2,3,"英语",wcf));
writableSheet.addCell(getLabel(3,3,"09::00",wcf));
writableSheet.addCell(getLabel(4,3,"-",wcf));
writableSheet.addCell(getLabel(5,3,"10:00",wcf));
writableSheet.addCell(getLabel(6,3,"1.00",wcf));
writableSheet.addCell(getLabel(7,3,"单词、背诵",wcf));
writableSheet.addCell(getLabel(8,3,"90分",wcf));
writableSheet.addCell(getLabel(9,3,"",wcf));
writableSheet.addCell(getLabel(2,4,"数学",wcf));
writableSheet.addCell(getLabel(3,4,"09::00",wcf));
writableSheet.addCell(getLabel(4,4,"-",wcf));
writableSheet.addCell(getLabel(5,4,"10:00",wcf));
writableSheet.addCell(getLabel(6,4,"1.00",wcf));
writableSheet.addCell(getLabel(7,4,"单词、背诵",wcf));
writableSheet.addCell(getLabel(8,4,"90分",wcf));
writableSheet.addCell(getLabel(9,4,"",wcf));
writableSheet.addCell(getLabel(2,5,"语文",wcf));
writableSheet.addCell(getLabel(3,5,"09::00",wcf));
writableSheet.addCell(getLabel(4,5,"-",wcf));
writableSheet.addCell(getLabel(5,5,"10:00",wcf));
writableSheet.addCell(getLabel(6,5,"1.00",wcf));
writableSheet.addCell(getLabel(7,5,"单词、背诵",wcf));
writableSheet.addCell(getLabel(8,5,"90分",wcf));
writableSheet.addCell(getLabel(9,5,"",wcf));
writableSheet.addCell(getLabel(2,6,"语文",wcf));
writableSheet.addCell(getLabel(3,6,"09::00",wcf));
writableSheet.addCell(getLabel(4,6,"-",wcf));
writableSheet.addCell(getLabel(5,6,"10:00",wcf));
writableSheet.addCell(getLabel(6,6,"1.00",wcf));
writableSheet.addCell(getLabel(7,6,"单词、背诵",wcf));
writableSheet.addCell(getLabel(8,6,"90分",wcf));
writableSheet.addCell(getLabel(9,6,"",wcf));
writableSheet.addCell(getLabel(2,7,"钢琴",wcf));
writableSheet.addCell(getLabel(3,7,"09::00",wcf));
writableSheet.addCell(getLabel(4,7,"-",wcf));
writableSheet.addCell(getLabel(5,7,"10:00",wcf));
writableSheet.addCell(getLabel(6,7,"1.00",wcf));
writableSheet.addCell(getLabel(7,7,"单词、背诵",wcf));
writableSheet.addCell(getLabel(8,7,"90分",wcf));
writableSheet.addCell(getLabel(9,7,"",wcf));
writableSheet.addCell(getLabel(2,8,"英语",wcf));
writableSheet.addCell(getLabel(3,8,"09::00",wcf));
writableSheet.addCell(getLabel(4,8,"-",wcf));
writableSheet.addCell(getLabel(5,8,"10:00",wcf));
writableSheet.addCell(getLabel(6,8,"1.00",wcf));
writableSheet.addCell(getLabel(7,8,"单词、背诵",wcf));
writableSheet.addCell(getLabel(8,8,"90分",wcf));
writableSheet.addCell(getLabel(9,8,"",wcf));
insertImage(writableSheet);
}
private static void insertImage(WritableSheet writableSheet) throws Exception {
try {
CellView cv = new CellView();
cv.setAutosize(false);
cv.setSize(270);
writableSheet.setRowView(10, cv);
writableSheet.setRowView(11, cv);
writableSheet.setRowView(12, cv);
writableSheet.setRowView(13, cv);
writableSheet.setRowView(14, cv);
writableSheet.setRowView(15, cv);
File fileImage = new File(excelExport.class.getResource("/1.png").getPath());
WritableImage image = new WritableImage(5, 10, 2, 6, fileImage);
writableSheet.addImage(image);
} catch (Exception e) {
throw new Exception("插入图片失败");
}
}
private static Label getLabel(Integer col, Integer row, String cont, CellFormat wcf) {
return new Label(col, row, cont, wcf);
}
private static WritableFont getWritableFontBoldBlackText() {
return new WritableFont(WritableFont.createFont("宋体"), 9, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLACK);
}
private static WritableFont getWritableFontBoldRedText() {
return new WritableFont(WritableFont.createFont("宋体"), 9, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, Colour.RED);
}
private static WritableFont getWritableFontBoldTitle() {
WritableFont wf = new WritableFont(WritableFont.createFont("宋体"), 16, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, Colour.BLACK);
return wf;
}
private static WritableCellFormat getWritableCellFormatCentre(WritableFont wf) throws WriteException {
WritableCellFormat wcf = new WritableCellFormat(wf);
wcf.setAlignment(jxl.format.Alignment.CENTRE);
wcf.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
wcf.setBorder(Border.ALL, BorderLineStyle.THIN);
wcf.setWrap(false);
return wcf;
}
private static WritableCellFormat getWritableCellFormatCentreBackage(WritableFont wf) throws WriteException {
WritableCellFormat wcf = new WritableCellFormat(wf);
wcf.setAlignment(jxl.format.Alignment.CENTRE);
wcf.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
wcf.setBackground(jxl.write.Colour.ICE_BLUE);
wcf.setBorder(Border.ALL, BorderLineStyle.THIN);
wcf.setWrap(false);
return wcf;
}
private static WritableCellFormat getWritableCellFormatLeft(WritableFont wf) throws WriteException {
WritableCellFormat wcf = new WritableCellFormat(wf);
wcf.setAlignment(Alignment.LEFT);
wcf.setBorder(Border.ALL, BorderLineStyle.THIN);
wcf.setWrap(false);
return wcf;
}
private static void writeWorksheet2(WritableSheet writableSheet) {
}
private static File createFile(String path) throws IOException {
File file = new File(path);
if (!file.getParentFile().exists())
file.getParentFile().mkdirs();
if (file.exists()) file.delete();
if (!file.createNewFile()) {
throw new IOException("创建文件[" + path + "]失败!");
}
return file;
}
}