使用JXL读取Excel表格.doc_第1页
使用JXL读取Excel表格.doc_第2页
使用JXL读取Excel表格.doc_第3页
使用JXL读取Excel表格.doc_第4页
使用JXL读取Excel表格.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

使用JXL读取Excel表格,拷贝、更新Excel工作薄作者: 文章来源:发布日期:2005年01月01日 浏览次数:1次/* 读取Excel表格,拷贝、更新Excel工作薄 * Description: 可以读取Excel文件的内容,更新Excel工作薄* * Copyright: Copyright (c) Corparation 2005* 程序开发环境为eclipse* author Walker* version 1.0*/package .yitong.xls;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.util.Vector;import .yitong.ChartImg;import .yitong.VireObj;import .yitong.platform.log.YTLogger;import jxl.CellType;import jxl.Workbook;import jxl.format.CellFormat;import jxl.format.Colour;import jxl.format.UnderlineStyle;import jxl.write.Formula;import jxl.write.Label;import jxl.write.Number;import jxl.write.WritableCell;import jxl.write.WritableCellFormat;import jxl.write.WritableFont;import jxl.write.WritableImage;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;import jxl.write.biff.RowsExceededException;public class XLSDemo private static final int TITLE_LENGTH = 7; private static final int SHEET_WIDTH = 32; private static final int SHEET_HEIGHT = 116; /* * 创建Excel */ private void makeXls() Workbook workbook = null; try / 构建Workbook对象, 只读Workbook对象 / 直接从本地文件创建Workbook, 从输入流创建Workbook InputStream ins = new FileInputStream(D:/Workspace/testproj/source.xls); workbook = Workbook.getWorkbook(ins); / 利用已经创建的Excel工作薄创建新的可写入的Excel工作薄 File outFile = new File(D:/Workspace/testproj/test.xls); WritableWorkbook wwb = Workbook.createWorkbook(outFile, workbook); / 读取第一张工作表 WritableSheet dataSheet = wwb.getSheet(0); / 设置冻结单元格 dataSheet.getSettings().setVerticalFreeze(7); dataSheet.getSettings().setHorizontalFreeze(2); / 测试模拟数据 Vector vecData = new Vector(); for(int i = 0; i 50; i +) VireObj obj = new VireObj(); obj.setOrgNo(00 + i + 0); obj.setOrgName(机构 + (i + 1); obj.setOpenAcc(int)(100 * Math.random(); obj.setDestoryAcc(int)(10 * Math.random(); obj.setTotalAcc(int)(500 * Math.random(); obj.setMonthInCount(int)(500 * Math.random(); obj.setMonthInMoney(500 * Math.random(); obj.setMonthOutCount(int)(500 * Math.random(); obj.setMonthOutMoney(500 * Math.random(); vecData.add(obj); / 插入数据 insertData(wwb, dataSheet, vecData); / 插入模拟图像数据 Vector vecImg = new Vector(); for(int i = 0; i 3; i +) ChartImg img = new ChartImg(); img.setImgTitle(图像 + (i + 1); img.setImgName(D:/Workspace/testproj/images/barchart.png); vecImg.add(img); / 插入图表 insertImgsheet(wwb, vecImg); /写入Excel对象 wwb.write(); wwb.close(); catch (Exception e) YTLogger.logDebug(e); finally / 操作完成时,关闭对象,释放占用的内存空间 workbook.close(); /* * 插入数据 * param wwb WritableWorkbook : 工作簿 * param dataSheet WritableSheet : 工作表 * throws RowsExceededException * throws WriteException */ private void insertData(WritableWorkbook wwb, WritableSheet dataSheet, Vector vecData) throws RowsExceededException, WriteException / 获得标题单元格对象 modiStrCell(dataSheet, 2, 0, 工商银行江苏省分行 个人网上银行业务种类/开销户明细报表(2005-12), null); / 修改数据单元格数据 for(int i = 0; i vecData.size(); i +) VireObj obj = (VireObj)vecData.get(i); modiStrCell(dataSheet, 0, TITLE_LENGTH + i, obj.getOrgNo(), null); modiStrCell(dataSheet, 1, TITLE_LENGTH + i, obj.getOrgName(), null); modiNumCell(dataSheet, 2, TITLE_LENGTH + i, obj.getOpenAcc(), null); modiNumCell(dataSheet, 3, TITLE_LENGTH + i, obj.getDestoryAcc(), null); modiNumCell(dataSheet, 4, TITLE_LENGTH + i, obj.getTotalAcc(), null); modiNumCell(dataSheet, 5, TITLE_LENGTH + i, obj.getMonthInCount(), null); modiNumCell(dataSheet, 6, TITLE_LENGTH + i, obj.getTotalInMoney(), null); modiNumCell(dataSheet, 7, TITLE_LENGTH + i, obj.getMonthOutCount(), null); modiNumCell(dataSheet, 8, TITLE_LENGTH + i, obj.getMonthOutMoney(), null); / 删除空行 for (int j = vecData.size() + TITLE_LENGTH; j SHEET_HEIGHT; j+) dataSheet.removeRow(vecData.size() + TITLE_LENGTH); / 插入公式 for(int i = 2; i SHEET_WIDTH; i +) modiFormulaCell(dataSheet, i, vecData.size() + TITLE_LENGTH, 8, vecData.size() + TITLE_LENGTH, null); /* * 修改字符单元格的值 * param dataSheet WritableSheet : 工作表 * param col int : 列 * param row int : 行 * param str String : 字符 * param format CellFormat : 单元格的样式 * throws RowsExceededException * throws WriteException */ private void modiStrCell(WritableSheet dataSheet, int col, int row, String str, CellFormat format) throws RowsExceededException, WriteException / 获得单元格对象 WritableCell cell = dataSheet.getWritableCell(col, row); / 判断单元格的类型, 做出相应的转化 if (cell.getType() = CellType.EMPTY) Label lbl = new Label(col, row, str); if(null != format) lbl.setCellFormat(format); else lbl.setCellFormat(cell.getCellFormat(); dataSheet.addCell(lbl); else if (cell.getType() = CellType.LABEL) Label lbl = (Label)cell; lbl.setString(str); else if (cell.getType() = CellType.NUMBER) / 数字单元格修改 Number n1 = (Number)cell; n1.setValue(42.05); /* * 修改数字单元格的值 * param dataSheet WritableSheet : 工作表 * param col int : 列 * param row int : 行 * param num double : 数值 * param format CellFormat : 单元格的样式 * throws RowsExceededException * throws WriteException */ private void modiNumCell(WritableSheet dataSheet, int col, int row, double num, CellFormat format) throws RowsExceededException, WriteException / 获得单元格对象 WritableCell cell = dataSheet.getWritableCell(col, row); / 判断单元格的类型, 做出相应的转化 if (cell.getType() = CellType.EMPTY) Number lbl = new Number(col, row, num); if(null != format) lbl.setCellFormat(format); else lbl.setCellFormat(cell.getCellFormat(); dataSheet.addCell(lbl); else if (cell.getType() = CellType.NUMBER) / 数字单元格修改 Number lbl = (Number)cell; lbl.setValue(num); else if (cell.getType() = CellType.LABEL) Label lbl = (Label)cell; lbl.setString(String.valueOf(num); /* * 修改公式单元格的值 * param dataSheet WritableSheet : 工作表 * param col int : 列 * param row int : 行 * param startPos int : 开始位置 * param endPos int : 结束位置 * param format * throws RowsExceededException * throws WriteException */ private void modiFormulaCell(WritableSheet dataSheet, int col, int row, int startPos, int endPos, CellFormat format) throws RowsExceededException, WriteException String f = getFormula(col, row, startPos, endPos); / 插入公式(只支持插入,不支持修改) WritableCell cell = dataSheet.getWritableCell(col, row); if (cell.getType() = CellType.EMPTY) / 公式单元格 Formula lbl = new Formula(col, row, f); if(null != format) lbl.setCellFormat(format); else lbl.setCellFormat(cell.getCellFormat(); dataSheet.addCell(lbl); else if (cell.getType() = CellType.STRING_FORMULA) YTLogger.logWarn(Formula modify not supported!); /* * 得到公式 * param col int : 列 * param row int : 行 * param startPos int : 开始位置 * param endPos int : 结束位置 * return String * throws RowsExceededException * throws WriteException */ private String getFormula(int col, int row, int startPos, int endPos) throws RowsExceededException, WriteException char base = A; char c1 = base; StringBuffer formula = new StringBuffer(128); / 组装公式 formula.append(SUM(); if (col 25) char c2 = (char) (col - 26) / 26 + base); c1 = (char) (col - 26) % 26 + base); formula.append(c2).append(c1).append(startPos).append(:) .append(c2).append(c1).append(endPos).append(); return formula.toString(); /* * 插入图表工作表 * param wwb WritableWorkbook : 工作簿 * param vecImg Vector : 图像链表 * throws RowsExceededException * throws WriteException */ private void insertImgsheet(WritableWorkbook wwb, Vector vecImg) throws RowsExceededException, WriteException / 插入图像 WritableSheet imgSheet; if(wwb.getSheets().length 2) imgSheet = wwb.createSheet(图表, 1); else imgSheet = wwb.getSheet(1); for (int i = 0; i vecImg.size(); i+) ChartImg chart = (ChartImg) vecImg.get(i); / 插入图像标题 Label lbl = new Label(0, 2 + 20 * i, chart.getImgTitle(); WritableFont font = new WritableFont(WritableFont.ARIAL, WritableFont.DEFAULT_POINT_SIZE, WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE, Colour.DARK_BLUE2); WritableCellFormat background = new WritableCellFormat(font); background.setWrap(true

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论