最近用到jxl 需要用到下拉列表,鉴于列表项很多 于是做了2个sheet页 一个作为数据,生成序列后使用在下拉列表中
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.UnderlineStyle;
import jxl.format.VerticalAlignment;
import jxl.write.Label;
import jxl.write.WritableCellFeatures;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class Test {
public void writeXls(OutputStream os) {
String[] fdArr = { "学号", "姓名", "班级", "成绩" };
JExcelUtils jeu = new JExcelUtils();
try {
WritableWorkbook workbook = Workbook.createWorkbook(os);
WritableSheet sheet = workbook.createSheet("信息", 0); //添加第一个工作表
WritableSheet sheetData = workbook.createSheet("data", 1); //添加第2个工作表
jeu.initialSheetSetting(sheet);
WritableCellFormat wcf = new WritableCellFormat(new WritableFont(WritableFont.ARIAL, 20, WritableFont.BOLD,
false, UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.GREEN));
wcf.setAlignment(Alignment.CENTRE);
wcf.setVerticalAlignment(VerticalAlignment.CENTRE);
wcf.setBorder(Border.ALL, BorderLineStyle.THIN);
jeu.mergeCellsAndInsertData(sheet, 1, 0, fdArr.length, 0, "学生基本信息", wcf);
for (int i = 0; i < fdArr.length; i++) {
String tb = fdArr[i];
Label label = new Label(i + 1, 1, tb, jeu.getTitleCellFormat());
sheet.addCell(label);
Label lLabel = new Label(i + 1, 2, "");
if (i == 2) {
WritableCellFeatures wcfc = new WritableCellFeatures();
getlReference(workbook, sheetData, "class");
wcfc.setDataValidationRange("class");
lLabel.setCellFeatures(wcfc);
}
sheet.addCell(lLabel);
}
workbook.write();
workbook.close();
} catch (Exception e) {
System.out.println(e);
}
}
private String getlReference(WritableWorkbook workbook, WritableSheet sheetData, String name)
throws RowsExceededException, WriteException {
for (int i = 0; i < 5000; i++) {
sheetData.addCell(new Label(0, i, "班级" + i));
}
workbook.addNameArea(name, sheetData, 0, 0, 0, 5000);
return name;
}
public static void main(String args[]) throws IOException, RowsExceededException, WriteException {
FileOutputStream fo = new FileOutputStream(new File("G://aa.xls"));
new Test().writeXls(fo);
}
}