`
- 浏览:
1510631 次
- 性别:
- 来自:
深圳
-
使用JXL读取Excel表格,拷贝、更新Excel工作薄
-
-
-
-
-
-
-
-
-
- package cn.com.yitong.xls;
-
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.InputStream;
- import java.util.Vector;
-
- import cn.com.yitong.ChartImg;
- import cn.com.yitong.VireObj;
- import cn.com.yitong.platform.log.YTLogger;
-
- import <SPAN class=hilite1>jxl</SPAN>.CellType;
- import <SPAN class=hilite1>jxl</SPAN>.Workbook;
- import <SPAN class=hilite1>jxl</SPAN>.format.CellFormat;
- import <SPAN class=hilite1>jxl</SPAN>.format.Colour;
- import <SPAN class=hilite1>jxl</SPAN>.format.UnderlineStyle;
- import <SPAN class=hilite1>jxl</SPAN>.write.Formula;
- import <SPAN class=hilite1>jxl</SPAN>.write.Label;
- import <SPAN class=hilite1>jxl</SPAN>.write.Number;
- import <SPAN class=hilite1>jxl</SPAN>.write.WritableCell;
- import <SPAN class=hilite1>jxl</SPAN>.write.WritableCellFormat;
- import <SPAN class=hilite1>jxl</SPAN>.write.WritableFont;
- import <SPAN class=hilite1>jxl</SPAN>.write.WritableImage;
- import <SPAN class=hilite1>jxl</SPAN>.write.WritableSheet;
- import <SPAN class=hilite1>jxl</SPAN>.write.WritableWorkbook;
- import <SPAN class=hilite1>jxl</SPAN>.write.WriteException;
- import <SPAN class=hilite1>jxl</SPAN>.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;
-
-
-
-
- private void makeXls()
- {
- Workbook workbook = null;
- try
- {
-
-
- InputStream ins = new FileInputStream("D:/Workspace/testproj/source.xls");
- workbook = Workbook.getWorkbook(ins);
-
-
- 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);
-
- wwb.write();
- wwb.close();
- } catch (Exception e)
- {
- YTLogger.logDebug(e);
- } finally
- {
-
- workbook.close();
- }
- }
-
-
-
-
-
-
-
-
- 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);
- }
- }
-
-
-
-
-
-
-
-
-
-
-
- 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);
- }
- }
-
-
-
-
-
-
-
-
-
-
-
- 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));
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
- 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!");
- }
- }
-
-
-
-
-
-
-
-
-
-
-
- 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)
- {
- c1 = (char) (col % 26 + base);
- formula.append(c1).append(startPos).append(":")
- .append(c1).append(endPos).append(")");
- } else 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();
- }
-
-
-
-
-
-
-
-
- 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);
- background.setBackground(Colour.GRAY_25);
- imgSheet.mergeCells(0, 2 + 20 * i, 9, 2 + 20 * i);
- lbl.setCellFormat(background);
- imgSheet.addCell(lbl);
-
- insertImgCell(imgSheet, 2, 4 + 20 * i, 8, 15, chart.getImgName());
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
- private void insertImgCell(WritableSheet dataSheet, int col, int row, int width,
- int height, String imgName) throws RowsExceededException, WriteException
- {
- File imgFile = new File(imgName);
- WritableImage img = new WritableImage(col, row, width, height, imgFile);
- dataSheet.addImage(img);
- }
-
-
-
-
-
- public static void main(String[] args)
- {
- XLSDemo demo = new XLSDemo();
- demo.makeXls();
- }
- }
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
"使用jxl读取Excel表格数据"这个主题就是关于如何利用jxl库来实现这一目标。jxl是一个开源的Java库,它提供了对Microsoft Excel文件格式的支持,使得在Java中操作Excel变得简单。 首先,你需要获取jxl的jar包。由于...
标题 "JXL 读取EXCEL" 涉及到的是使用Java Excel Library(简称JXL)这个开源库来处理Microsoft Excel文件。JXL是一个强大的工具,它允许开发者在Java程序中读取、写入和修改Excel文件。下面将详细介绍JXL库以及如何...
`jxl`库是一个广泛使用的第三方库,它允许开发者轻松地读取、写入和修改Excel文件。本篇文章将深入探讨如何利用`jxl.jar`包来实现这一功能。 首先,确保你已经正确地将`jxl.jar`文件添加到你的项目类路径中。这可以...
JXL库是一个广泛使用的Java库,它允许开发者读取、写入和修改Excel文件。本篇将深入探讨如何使用JXL库在Java中打印Excel报表。 首先,要使用JXL库,你需要在项目中引入它的依赖。在本例中,`jxl.jar`是JXL库的核心...
NULL 博文链接:https://zhouyq.iteye.com/blog/272883
在Java编程环境中,有时我们需要处理Excel文件,例如读取数据、分析内容或更新信息。这时,我们可以使用第三方库,如jxl,它是一个用于读写Excel文件的Java库。本篇将详细介绍如何利用jxl库读取Excel文件,并提供一...
JXL库是一个广泛使用的开源库,它允许开发者轻松地读取和写入Excel文件。本文将详细介绍如何使用JXL库来读取Excel数据,并通过一个实际的代码示例进行演示。 首先,你需要在项目中引入JXL库。如果你使用的是Maven,...
这里我们将深入探讨如何使用jxl.jar库在Android环境中操作Excel表格,特别是处理隐藏表的情况。 首先,jxl是一个Java库,它允许我们以编程方式读取和写入Microsoft Excel文件。由于Android系统基于Java,因此可以...
本文将深入探讨如何利用`jxl`库进行Excel表格的操作,包括读取表格、拷贝工作簿、更新工作簿以及将多个Sheet合并到一个Excel文件中。 首先,让我们了解`jxl`库的基本概念。`jxl`库提供了一系列的类和接口,如`...
在Java编程环境中,处理Excel数据是一项常见的任务,特别是在数据导入导出、数据分析或者报表生成等...这个"jxl读取excel的java代码小程序"就是一个很好的起点,帮助我们了解并掌握使用JXL进行Excel读取的基本步骤。
jxl库支持多种Excel操作,包括创建新的工作簿、添加工作表、设置单元格格式、插入公式以及读取Excel数据。这个库的使用极大地简化了在Java中处理Excel文件的工作流程。 在描述中提到的"txt转为excel Demo",这是一...
Java中的JXL库是一个非常实用的工具,它允许开发者在应用程序中读取、写入和修改Excel文件。这个库特别适合那些需要处理大量数据并希望将数据格式化为表格的项目。下面我们将深入探讨JXL库在Java Excel解析中的应用...
JXL库是Java中一个广泛使用的库,它允许开发者方便地读取和写入Excel文件,而无需依赖Microsoft Office。本文将详细讨论如何使用JXL库创建一个通用的工具类来读取Excel模板并填充数据。 首先,我们需要了解JXL库的...
使用jxl,你可以轻松地读取Excel工作表中的单元格数据、公式、样式以及图表信息。 在描述中提到的另外两个jar包——`commons-fileupload-1.3.1.jar`和`commons-io-2.4.jar`,则是处理网络文件上传和I/O操作的重要库...
本篇将详细介绍如何使用`jxl`库进行Excel的操作,包括导入、导出、读取以及更新Excel内容。 首先,让我们了解一下`jxl`库。`jxl`是Java Excel API的缩写,它提供了一个方便的接口,允许开发者以编程方式处理Excel...
在这个"JXL读写Excel小例子"中,我们将深入探讨如何使用JXL库来操作Excel数据。 首先,为了开始使用JXL,你需要将其添加到你的项目依赖中。如果你使用Maven,可以在pom.xml文件中添加以下依赖: ```xml ...
"jxl"库是一个专门为Java设计的库,允许开发者方便地读取和写入Microsoft Excel(XLS)文件。这个库提供了丰富的API,使得在Java程序中操作Excel表格变得简单。 首先,我们来看"jxl"库的基本使用。在Java项目中,你...
JXL库提供了方便的API,使得开发者可以轻松地处理Excel数据,包括读取单元格内容、修改工作表、添加公式,以及本文重点讨论的——插入和输出图片。 **一、JXL库介绍** JXL是一个开源的Java库,专门用于处理Excel...
3. **解析保存**:使用JXL库读取并解析Excel文件。以下是一个简单的示例代码片段,展示如何打开文件并遍历工作表: ```java Workbook workbook = Workbook.getWorkbook(new File("path_to_your_excel_file")); ...