jxl实用技巧

import java.io.File;

  import java.io.FileOutputStream;

  import java.io.OutputStream;

  import java.util.ArrayList;

  import java.util.Date;

  import java.util.HashMap;

  import jxl.Cell;

  import jxl.CellType;

  import jxl.DateCell;

  import jxl.Range;

  import jxl.Sheet;

  import jxl.Workbook;

  import jxl.WorkbookSettings;

  import jxl.format.Alignment;

  import jxl.format.Border;

  import jxl.format.BorderLineStyle;

  import jxl.format.CellFormat;

  import jxl.format.Colour;

  import jxl.format.UnderlineStyle;

  import jxl.format.VerticalAlignment;

  import jxl.write.Formula;

  import jxl.write.Label;

  import jxl.write.Number;

  import jxl.write.NumberFormat;

  import jxl.write.WritableCell;

  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 WriteExcelTest {

  static HashMap map = new HashMap();

  public static void main(String args) {

  try {

  // copyDateFormat(new File("c:““a.xls"), 0, "c:““copy of a.xls");

  writeExcelUseFormat("c:““format.xls","test");

  // buildNewFormTemplete(new File("c:/templete.xls"),new File(

  // "c:/buildNewFormTemplete.xls"));

  // modifyDirectly1(new File("c:/templete.xls"));

  // modifyDirectly2(new File("c:/templete.xls"));

  //copyDateAndFormat(new File("c:/a.xls"), 0, "c:/a2.xls");

  } catch (Exception e) {

  // TODO 自动生成 catch 块

  e.printStackTrace();

  }

  }

  public static void modifyDirectly2(File inputFile) throws Exception {

  Workbook w1 = Workbook.getWorkbook(inputFile);

  WritableWorkbook w2 = Workbook.createWorkbook(inputFile, w1);

  WritableSheet sheet = w2.getSheet(0);

  WritableCell cell = null;

  CellFormat cf = null;

  // 加粗

  cell = sheet.getWritableCell(0, 0);

  WritableFont bold = new WritableFont(WritableFont.ARIAL,

  WritableFont.DEFAULT_POINT_SIZE, WritableFont.BOLD);

  cf = new WritableCellFormat(bold);

  cell.setCellFormat(cf);

  编辑:

  |||

  // 设置下划线

  cell = sheet.getWritableCell(0, 1);

  WritableFont underline = new WritableFont(WritableFont.ARIAL,

  WritableFont.DEFAULT_POINT_SIZE, WritableFont.NO_BOLD, false,

  UnderlineStyle.SINGLE);

  cf = new WritableCellFormat(underline);

  cell.setCellFormat(cf);

  // 直截添加可以覆盖掉

  setCellValueDirectly(sheet, sheet.getCell(0, 2), new Double(4),

  CellType.NUMBER);

  w2.write();

  w2.close();

  }

  public static void modifyDirectly1(File file) {

  try {

  // Excel获得文件

  Workbook wb = Workbook.getWorkbook(file);

  // 打开一个文件的副本,并且指定数据写回到原文件

  WritableWorkbook book = Workbook.createWorkbook(file, wb);

  WritableSheet sheet0 = book.getSheet(0);

  sheet0.addCell(new Label(0, 1, "陈小稳"));

  // 添加一个工作表

  WritableSheet sheet = book.createSheet(" 第二页 ", 1);

  sheet.addCell(new Label(0, 0, " 第二页的测试数据 "));

  book.write();

  book.close();

  } catch (Exception e) {

  System.out.println(e);

  }

  }

  public static void buildNewFormTemplete(File inputFile, File outputFile) {

  try {

  // Excel获得文件

  Workbook wb = Workbook.getWorkbook(inputFile);

  // 打开一个文件的副本,并且指定数据写回到原文件

  WritableWorkbook book = Workbook.createWorkbook(outputFile, wb);

  WritableSheet sheet0 = book.getSheet(0);

  sheet0.addCell(new Label(0, 1, "陈小稳"));

  // 添加一个工作表

  WritableSheet sheet = book.createSheet(" 第二页 ", 1);

  sheet.addCell(new Label(0, 0, " 第二页的测试数据 "));

  book.write();

  book.close();

  } catch (Exception e) {

  System.out.println(e);

  }

  }

  public static void copyDateAndFormat(File inputFile,

  int inputFileSheetIndex, String outputFilePath) throws Exception {

  Workbook book = null;

  Cell cell = null;|||

  // 1.避免乱码的设置

  WorkbookSettings setting = new WorkbookSettings();

  java.util.Locale locale = new java.util.Locale("zh", "CN");

  setting.setLocale(locale);

  setting.setEncoding("ISO-8859-1");

  book = Workbook.getWorkbook(inputFile, setting);

  Sheet readonlySheet = book.getSheet(inputFileSheetIndex);

  OutputStream os = new FileOutputStream(outputFilePath);// 输出的Excel文件URL

  WritableWorkbook wwb = Workbook.createWorkbook(os);// 创建可写工作薄

  WritableSheet writableSheet = wwb.createSheet(readonlySheet.getName(),

  0);// 创建可写工作表

  // 2.誊写不同数据格式的数据

  for (int rowIndex = 0; rowIndex < readonlySheet.getRows(); rowIndex++) {

  for (int colIndex = 0; colIndex < readonlySheet.getColumns(); colIndex++) {

  cell = readonlySheet.getCell(colIndex, rowIndex);

  // A2B2为合并的单元格,A2有内容,B2为空

  // if(colIndex == 0 && rowIndex == 1){

  // System.out.println(colIndex + "," + rowIndex + " type:" +

  // cell.getType() +" :" + cell.getContents());

  // }

  // 【有各种设置格式】

  if (cell.getType() == CellType.DATE

  || cell.getType() == CellType.DATE_FORMULA) {

  writableSheet.addCell(new jxl.write.DateTime(colIndex,

  rowIndex, ((DateCell) cell).getDate(),

  new jxl.write.WritableCellFormat(cell

  .getCellFormat())));

  } else if (cell.getType() == CellType.NUMBER

  || cell.getType() == CellType.NUMBER_FORMULA) {

  writableSheet.addCell(new jxl.write.Number(colIndex,

  rowIndex, ((jxl.NumberCell) cell).getValue(),

  new jxl.write.WritableCellFormat(cell

  .getCellFormat())));

  } else if (cell.getType() == CellType.EMPTY) {

  // 空的以及合并单元格中第一列外的

  // System.out.println("EMPTY:"+cell.getContents());

  // System.err.println("空单元格 at " + colIndex + "," + rowIndex

  // +" content:" + cell.getContents());

  } else if (cell.getType() == CellType.LABEL

  || cell.getType() == CellType.STRING_FORMULA) {

  writableSheet.addCell(new Label(colIndex, rowIndex, cell

  .getContents(), new jxl.write.WritableCellFormat(

  cell.getCellFormat())));

  } else {

  System.err.println("其它单元格类型:" + cell.getType() + " at "

  + colIndex + "," + rowIndex + " content:"

  + cell.getContents());

  }

  // if(cell.getType() == CellType.STRING_FORMULA){

  // System.err.println(colIndex + "," + rowIndex +":" +

  // cell.getContents() +" type:" + cell.getType());

  // }

  }

  }|||

  // 3.处理合并单元格的事情(复制合并单元格格式)

  Range range = readonlySheet.getMergedCells();

  for (int i = 0; i < range.length; i++) {

  // System.out.println("第"+i+"处合并的单元格:"

  // +",getTopLeft="+range[i].getTopLeft().getColumn()

  // +","+range[i].getTopLeft().getRow()

  // +",getBottomRight="+range[i].getBottomRight().getColumn()

  // +","+range[i].getBottomRight().getRow()

  // );

  // topleftXIndex, topleftYIndex, bottomRightXIndex,

  // bottomRightYIndex

  writableSheet.mergeCells(range[i].getTopLeft().getColumn(),

  range[i].getTopLeft().getRow(), range[i].getBottomRight()

  .getColumn(), range[i].getBottomRight().getRow());

  }

  // 4.设置行列高宽

  for (int colIndex = 0; colIndex < readonlySheet.getColumns(); colIndex++) {

  writableSheet.setColumnView(colIndex, readonlySheet

  .getColumnView(colIndex));

  }

  for (int rowIndex = 0; rowIndex < readonlySheet.getRows(); rowIndex++) {

  writableSheet.setRowView(rowIndex, readonlySheet

  .getRowView(rowIndex));

  }

  wwb.write();

  wwb.close();

  os.close();

  }

  public static void writeExcelUseFormat(String outputFilePath,

  String outputFileSheetName) throws Exception {

  OutputStream os = new FileOutputStream(outputFilePath);// 输出的Excel文件URL

  WritableWorkbook wwb = Workbook.createWorkbook(os);// 创建可写工作薄

  WritableSheet sheet = wwb.createSheet(outputFileSheetName, 0);// 创建可写工作表

  sheet.addCell(new Label(0, 0, "号码"));

  sheet.addCell(new Label(1, 0, "有效期"));

  // 1.写入时间的数据格式

  jxl.write.DateFormat df = new jxl.write.DateFormat("yyyy-MM-dd");

  jxl.write.WritableCellFormat wcfDF = new jxl.write.WritableCellFormat(

  df);

  jxl.write.DateTime labelDTF = new jxl.write.DateTime(1, 1, new Date(),

  wcfDF); // 自定义格式

  sheet.addCell(labelDTF);

  // 2.字体样式

  // WritableFont()方法里参数说明

  // 这个方法算是一个容器,可以放进去好多属性

  // 第一个: TIMES是字体大小,他写的是18

  // 第二个: BOLD是判断是否为斜体,选择true时为斜体

  // 第三个: ARIAL

  // 第四个: UnderlineStyle.NO_UNDERLINE 下划线

  // 第五个: jxl.format.Colour.RED 字体颜色是红色的

  jxl.write.WritableFont wf = new jxl.write.WritableFont(

  WritableFont.TIMES, 18, WritableFont.BOLD, true);

  jxl.write.WritableCellFormat wcfF = new jxl.write.WritableCellFormat(wf);

  wcfF.setWrap(true);// 自动换行

  wcfF.setAlignment(jxl.format.Alignment.CENTRE);// 把水平对齐方式指定为居中

  wcfF.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);// 把垂直对齐方式指定为居中

  jxl.write.Label labelC = new jxl.write.Label(0, 1,

  "This is a Label cell", wcfF);

  sheet.addCell(labelC);

  // 3.添加带有formatting的Number对象

  jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");

  jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat(nf);

  jxl.write.Number labelNF = new jxl.write.Number(0, 2, 3.1415926, wcfN);

  sheet.addCell(labelNF);

  // 4.添加Boolean对象

  jxl.write.Boolean labelB = new jxl.write.Boolean(0, 3, false);

  sheet.addCell(labelB);

  // 5.设置一个注解

  WritableCellFeatures cellFeatures = new WritableCellFeatures();

  cellFeatures.setComment("添加Boolean对象");

  labelB.setCellFeatures(cellFeatures);

  // 6.单元格内换行

  WritableCellFormat wrappedText = new WritableCellFormat(

  WritableWorkbook.ARIAL_10_PT);

  wrappedText.setWrap(true);// 可换行的label样式

  Label label = new Label(4, 0, "测试,“012测试。。。", wrappedText); // "“012"强制换行

  sheet.addCell(label);

原文地址:http://www.exam8.com/computer/Java/zonghe/200912/658344.html

你可能感兴趣的:(android,JXL)