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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章