java操作EXCEL表格经典例子详解

Microsoft的Office系列产品拥有大量的用户,Word、Excel也成为办公文件的首选。

在Java 中,已经有很多对于Word、Excel的开源的解决方案,其中比较出色的是Apache的Jakata 项目的POI子项目。

该项目的官方网站是/poi/。

POI包括一系列的API,它们可以操作基于MicroSoft OLE 2 Compound Document Format的各种格式文件,可以通过这些API在Java中读写Excel、Word等文件。

POI是完全的Java Excel 和Java Word解决方案。

POI子项目包括:POIFS、HSSF、HDF、HPSF。

表7-2对它们进行了简要介绍。

表7-2 POI子项目介绍子项目名说明POIFS(POI File System)POIFS是POI项目中最早的最基础的一个模块,是Java到OLE 2 Compound Document Format 的接口,支持读写功能,所有的其他项目都依赖与该项目。

HSSF(Horrible Spreadsheet Format)HSSF是Java到Microsoft Excel 97(-2002)文件的接口,支持读写功能HWPF(Horrible Word Processing Format)HWPF是Java到Microsoft Word 97文件的接口,支持读写功能,但目前该模块还处于刚开始开发阶段,只能实现一些简单文件的操作,在后续版本中,会提供更强大的支持HPSF(Horrible Property Set Format)HPSF 是Java到OLE 2 Compound Document Format文件的属性设置的接口,属性设置通常用来设置文档的属性(标题,作者,最后修改日期等),还可以设置用户定义的属性。

HPSF支持读写功能,当前发布版本中直支持读功能。

7.3.1 对Excel的处理类下面通过HSSF提供的接口对Excel文件经行处理。

首先需要下载POI的包,可以到apache 的官方网站下载,地址为:/jakarta/poi/,本书采用的是poi-2.5.1-final-20040804.jar,读者可以下载当前的稳定版本。

把下载的包按照前面介绍的方式加入Build Path,然后新建一个ch7.poi包,并创建一个ExcelReader类。

ExcelReader类可以读取一个XLS文件,然后将其内容逐行提取出来,写入文本文件。

其代码如下。

代码7.6public class ExcelReader {// 创建文件输入流private BufferedReader reader = null;// 文件类型private String filetype;// 文件二进制输入流private InputStream is = null;// 当前的Sheetprivate int currSheet;// 当前位置private int currPosition;// Sheet数量private int numOfSheets;// HSSFWorkbookHSSFWorkbook workbook = null;// 设置Cell之间以空格分割private static String EXCEL_LINE_DELIMITER = " ";// 设置最大列数private static int MAX_EXCEL_COLUMNS = 64;// 构造函数创建一个ExcelReaderpublic ExcelReader(String inputfile) throws IOException, Exception { // 判断参数是否为空或没有意义if (inputfile == null || inputfile.trim().equals("")) {throw new IOException("no input file specified");}// 取得文件名的后缀名赋值给filetypethis.filetype = inputfile.substring(stIndexOf(".") + 1); // 设置开始行为0currPosition = 0;// 设置当前位置为0currSheet = 0;// 创建文件输入流is = new FileInputStream(inputfile);// 判断文件格式if (filetype.equalsIgnoreCase("txt")) {// 如果是txt则直接创建BufferedReader读取reader = new BufferedReader(new InputStreamReader(is));}else if (filetype.equalsIgnoreCase("xls")) {// 如果是Excel文件则创建HSSFWorkbook读取workbook = new HSSFWorkbook(is);// 设置Sheet数numOfSheets = workbook.getNumberOfSheets();}else {throw new Exception("File Type Not Supported"); }}// 函数readLine读取文件的一行public String readLine() throws IOException {// 如果是txt文件则通过reader读取if (filetype.equalsIgnoreCase("txt")) {String str = reader.readLine();// 空行则略去,直接读取下一行while (str.trim().equals("")) {str = reader.readLine();}return str;}// 如果是XLS文件则通过POI提供的API读取文件else if (filetype.equalsIgnoreCase("xls")) {// 根据currSheet值获得当前的sheetHSSFSheet sheet = workbook.getSheetAt(currSheet); // 判断当前行是否到但前Sheet的结尾if (currPosition > sheet.getLastRowNum()) {// 当前行位置清零currPosition = 0;// 判断是否还有Sheetwhile (currSheet != numOfSheets - 1) {// 得到下一张Sheetsheet = workbook.getSheetAt(currSheet + 1); // 当前行数是否已经到达文件末尾if (currPosition == sheet.getLastRowNum()) { // 当前Sheet指向下一张SheetcurrSheet++;continue;} else {// 获取当前行数int row = currPosition;currPosition++;// 读取当前行数据return getLine(sheet, row);}}return null;}// 获取当前行数int row = currPosition;currPosition++;// 读取当前行数据return getLine(sheet, row);}return null;}// 函数getLine返回Sheet的一行数据private String getLine(HSSFSheet sheet, int row) { // 根据行数取得Sheet的一行HSSFRow rowline = sheet.getRow(row);// 创建字符创缓冲区StringBuffer buffer = new StringBuffer();// 获取当前行的列数int filledColumns = rowline.getLastCellNum(); HSSFCell cell = null;// 循环遍历所有列for (int i = 0; i < filledColumns; i++) {// 取得当前Cellcell = rowline.getCell((short) i);String cellvalue = null;if (cell != null) {// 判断当前Cell的Typeswitch (cell.getCellType()) {// 如果当前Cell的Type为NUMERICcase HSSFCell.CELL_TYPE_NUMERIC: {// 判断当前的cell是否为Dateif (HSSFDateUtil.isCellDateFormatted(cell)) {// 如果是Date类型则,取得该Cell的Date值Date date = cell.getDateCellValue();// 把Date转换成本地格式的字符串cellvalue = cell.getDateCellValue().toLocaleString();}// 如果是纯数字else {// 取得当前Cell的数值Integer num = new Integer((int) cell.getNumericCellValue());cellvalue = String.valueOf(num);}break;}// 如果当前Cell的Type为STRINcase HSSFCell.CELL_TYPE_STRING:// 取得当前的Cell字符串cellvalue = cell.getStringCellValue().replaceAll("'", "''");break;// 默认的Cell值default:cellvalue = " ";}} else {cellvalue = "";}// 在每个字段之间插入分割符buffer.append(cellvalue).append(EXCEL_LINE_DELIMITER); }// 以字符串返回该行的数据return buffer.toString();}// close函数执行流的关闭操作public void close() {// 如果is不为空,则关闭InputSteam文件输入流if (is != null) {try {is.close();} catch (IOException e) {is = null;}}// 如果reader不为空则关闭BufferedReader文件输入流if (reader != null) {try {reader.close();} catch (IOException e) {reader = null;}}}}7.3.2 ExcelReader的运行效果下面创建一个main函数,用来测试上面的ExcelReader类,代码如下。

合集下载

Java中操作Excel表格方法

Java中操作Excel表格方法

Java中操作Excel表格方法Java中操作Excel表格方法引导语:我们都知道Excel 可以进行各种数据的处理、统计分析和辅助决策操作,那么在Java中又是如何操作Excel 表格的呢,以下是店铺分享给大家的Java中操作Excel表格方法,欢迎阅读!利用Java Excel API ,下载地址:jexcelapi.rar下面给出一段读取数据的例子代码:/** To change this template, choose Tools | Templates* and open the template in the editor.*/package excel;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.util.logging.Level;import java.util.logging.Logger;import jxl.Cell;import jxl.Sheet;import jxl.Workbook;import jxl.read.biff.BiffException;/**** @author Wei.Liu*/public class Main {/*** @param args the command line arguments*/public static void main(String[] args) {try {InputStream is = new FileInputStream("d:\\test.xls"); jxl.Workbook rwb = Workbook.getWorkbook(is); Sheet rs = rwb.getSheet(0);//取第一行,第一列的元素Cell c00 = rs.getCell(0, 0);String strc00 = c00.getContents();//取第一行,第二列的`元素Cell c10 = rs.getCell(1,0);String strc10= c10.getContents();System.out.println(strc00+" "+c00.getType().toString()); System.out.println(strc10+" "+c10.getType().toString()); //获取sheet的个数System.out.println(rwb.getNumberOfSheets());Sheet [] sheets =rwb.getSheets();for(int i=0;iSystem.out.println(rwb.getSheet(i).getName());}//获得列数System.out.println(rwb.getSheet(0).getColumns());//获得每列的元素Cell [] cell = rwb.getSheet(0).getColumn(0);//获得总行数System.out.println(rwb.getSheet(0).getRows());//获得行元素Cell [] cell2 = rwb.getSheet(0).getRow(0);//关闭对象rwb.close();} catch (Exception ex) {Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);}}}再给出一段,创建Excel表格的代码:/** To change this template, choose Tools | Templates* and open the template in the editor.*/package excel;import java.io.File;import java.util.logging.Level;import java.util.logging.Logger;import jxl.Workbook;import bel;import jxl.write.WritableCellFormat;import jxl.write.WritableFont;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.Number;/**** @author Wei.Liu*/public class Main {/*** @param args the command line arguments*/public static void main(String[] args) {try {//创建EXCEL表格WritableWorkbook wwb = Workbook.createWorkbook(new File("d:\\test.xls"));//创建工作表WritableSheet ws = wwb.createSheet("Liu.Wei",0);//创建单元格ws.addCell(new Label(0,0,"Hello World"));//添加设置字体格式的单元格WritableFont wfc = new WritableFont(WritableFont.ARIAL,15,WritableFont.BOLD,true);WritableCellFormat wcff= new WritableCellFormat(wfc);Label labelcf = new Label(1,0,"Format text",wcff);ws.addCell(labelcf);//向单元格中写入数字Number labelN = new Number(0,1,12345);ws.addCell(labelN);wwb.write();wwb.close();} catch (Exception ex) {Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);}}}最后给出一段更新表格的代码:/** To change this template, choose Tools | Templates* and open the template in the editor.*/package excel;import java.io.File;import java.io.IOException;import java.util.logging.Level;import java.util.logging.Logger;import jxl.CellType;import jxl.Workbook;import jxl.read.biff.BiffException;import bel;import jxl.write.WritableCell;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;/**** @author Wei.Liu*/public class Main {/*** @param args the command line arguments*/public static void main(String[] args) {try {Workbook rw = Workbook.getWorkbook(new File("d:\\test.xls"));WritableWorkbook wwb = Workbook.createWorkbook(new File("d:\\test.xls"),rw);//修改单元格的值WritableSheet ws = wwb.getSheet(0);WritableCell wc = ws.getWritableCell(0,0);if(wc.getType() == BEL){Label l= (Label)wc;l.setString("Modified");}wwb.write();wwb.close();rw.close();} catch (Exception ex) {Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);}}}【Java中操作Excel表格方法】。

用JAVA来解析EXCEL文档实例

用JAVA来解析EXCEL文档实例

用JA V A来解析EXCEL文档实例//该例子用POI 3.0实现,请自行到APATCH网站下载POI import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.util.ArrayList;import java.util.List;import org.apache.log4j.Logger;import ermodel.HSSFCell;import ermodel.HSSFRow;import ermodel.HSSFSheet;import ermodel.HSSFWorkbook;/*** EXCEL文档解析工具类* 该工具能将EXCEL文档中的表解析为由JA V A基础类构成的数据集合* 整个EXCEL表由多个行组成.每行用一个LIST表示.* EXCEL中的行由一个LIST表示,各列的数据索引从0开始一一对齐存放在这个LIST中;* 多个行构成整个表,由一个LIST存放多个行.********************************************* mon.fileParser.excel* 2007-6-15* 16:20:38* author linfan********************************************/public class ExcelSheetParser {private Logger logger=Logger.getLogger(ExcelSheetParser.class);private HSSFWorkbook workbook ;public ExcelSheetParser(File excelFile) throws FileNotFoundException, IOException{ workbook = new HSSFWorkbook(new FileInputStream(excelFile));}/*** 获得表中的数据* @param sheetNumber 表格索引(EXCEL 是多表文档,所以需要输入表索引号)* @return 由LIST构成的行和表* @throws FileNotFoundException* @throws IOException*/public List&lt;List&gt; getDatasInSheet(int sheetNumber) throws FileNotFoundException, IOException{List&lt;List&gt; result = new ArrayList&lt;List&gt;();//获得指定的表HSSFSheet sheet = workbook.getSheetAt(sheetNumber);//获得数据总行数int rowCount = sheet.getLastRowNum();("found excel rows count: " + rowCount);if (rowCount &lt; 1) {return result;}//逐行读取数据for (int rowIndex = 0; rowIndex &lt;= rowCount; rowIndex++) {//获得行对象HSSFRow row = sheet.getRow(rowIndex);if (row != null) {List&lt;Object&gt; rowData = new ArrayList&lt;Object&gt;();//获得本行中单元格的个数int columnCount = row.getLastCellNum();//获得本行中各单元格中的数据for (short columnIndex = 0; columnIndex &lt; columnCount; columnIndex++) {HSSFCell cell = row.getCell(columnIndex);//获得指定单元格中数据Object cellStr = this.getCellString(cell);rowData.add(cellStr);}result.add(rowData);}}return result;}/*** 获得单元格中的内容* @param cell* @return*/protected Object getCellString(HSSFCell cell){ Object result = null;if (cell != null) {int cellType = cell.getCellType();switch(cellType){case HSSFCell.CELL_TYPE_STRING :result = cell.getRichStringCellValue().getString();break;case HSSFCell.CELL_TYPE_NUMERIC:result=cell.getNumericCellValue();break;case HSSFCell.CELL_TYPE_FORMULA:result = cell.getNumericCellValue();break;case HSSFCell.CELL_TYPE_ERROR:result=null;break;case HSSFCell.CELL_TYPE_BOOLEAN:result=cell.getBooleanCellValue();break;case HSSFCell.CELL_TYPE_BLANK:result=null;break;}}return result;}public static void main(String[] args) throws Exception { File file = new File("D:\\tmp\\test.xls");ExcelSheetParser parser = new ExcelSheetParser(file);List&lt;List&gt; datas = parser.getDatasInSheet(0);for(int i=0;i&lt;datas.size();i++){//显示数据List row = datas.get(i);for(short n=0;n&lt;row.size() ;n++){Object value = row.get(n);String data = String.valueOf(value);System.out.print(data +"\t");}System.out.println();}}}。

java excel处理详解

java excel处理详解

java excel处理详解Java是一种强大的编程语言,它可以帮助开发者快速开发出各种各样的应用程序。

在很多场合,我们需要使用Java来处理Excel表格。

下面将详细讲解Java如何处理Excel 表格。

1. 读取Excel文件要读取Excel文件,我们需要使用Java中的Apache POI库。

以下是读取Excel文件的代码示例:```import java.io.File;import java.io.FileInputStream;import java.io.IOException;import ermodel.*;public class ReadExcelFile {// 获取工作表数量int numberOfSheets = workbook.getNumberOfSheets();System.out.println("Number of sheets: " + numberOfSheets);// 遍历行for (Row row : sheet) {// 遍历单元格for (Cell cell : row) {String value = cell.getStringCellValue();System.out.print(value + " ");}System.out.println();}}// 关闭输入流inputStream.close();}}```这段代码首先打开一个Excel文件(data.xlsx),然后使用WorkbookFactory创建一个工作簿对象。

我们可以使用getNumberOfSheets()方法获取工作表的数量。

接着使用getSheetAt()方法遍历每个工作表。

使用for each循环遍历每一行,再遍历每一个单元格。

最后,关闭输入流。

// 创建一个工作表对象Sheet sheet = workbook.createSheet("Sheet1");// 创建行和单元格Row row = sheet.createRow(0);Cell cell = row.createCell(0);cell.setCellValue("Hello World!");这段代码首先创建一个新的工作簿对象。

excel java 列操作的方法

excel java 列操作的方法

excel java 列操作的方法在Java中与Excel进行交互是数据处理和报告生成中的一个常见需求。

Apache POI是一个流行的Java库,用于处理Microsoft Office文档,包括Excel。

本文将详细介绍几种使用Java对Excel中的列进行操作的方法。

### Excel列操作基础在进行列操作之前,需要确保你的项目中已经添加了Apache POI的依赖。

以下是一些基本的操作方法:#### 1.读取列数据```javaimport ermodel.*;public class ExcelColumnReader {public static void readColumnData(String excelFilePath, int sheetIndex, int columnIndex) throws IOException {try (FileInputStream fis = newFileInputStream(excelFilePath);Workbook workbook = WorkbookFactory.create(fis)) {Sheet sheet = workbook.getSheetAt(sheetIndex);for (Row row : sheet) {Cell cell = row.getCell(columnIndex);if (cell != null) {// 根据不同的数据类型处理单元格数据switch (cell.getCellType()) {case STRING:System.out.println(cell.getStringCellValue());break;case NUMERIC:System.out.println(cell.getNumericCellValue());break;// 其他类型处理...}}}}}}```#### 2.写入列数据```javaimport ermodel.*;public class ExcelColumnWriter {public static void writeColumnData(String excelFilePath, intsheetIndex, int columnIndex, String data) throws IOException {try (FileInputStream fis = newFileInputStream(excelFilePath);Workbook workbook = WorkbookFactory.create(fis);FileOutputStream fos = newFileOutputStream(excelFilePath)) {Sheet sheet = workbook.getSheetAt(sheetIndex);for (Row row : sheet) {Cell cell = row.createCell(columnIndex);cell.setCellValue(data);}workbook.write(fos);}}}```#### 3.删除列```javaimport ermodel.*;public class ExcelColumnDeleter {public static void deleteColumn(String excelFilePath, int sheetIndex, int columnIndex) throws IOException {try (FileInputStream fis = newFileInputStream(excelFilePath);Workbook workbook = WorkbookFactory.create(fis);FileOutputStream fos = newFileOutputStream(excelFilePath)) {Sheet sheet = workbook.getSheetAt(sheetIndex);for (Row row : sheet) {row.removeCell(row.getCell(columnIndex));}workbook.write(fos);}}}```### 高级列操作除了基本的读取、写入和删除操作外,以下是一些更高级的列操作方法:#### 1.复制列```java// 此处省略具体代码,因为复制列涉及到位操作和单元格样式复制等复杂操作```#### 2.遍历列并应用公式```javaimport ermodel.*;public class ExcelColumnFormulaApplier {public static void applyFormula(String excelFilePath, int sheetIndex, int columnIndex, String formula) throws IOException { try (FileInputStream fis = newFileInputStream(excelFilePath);Workbook workbook = WorkbookFactory.create(fis);FileOutputStream fos = newFileOutputStream(excelFilePath)) {Sheet sheet = workbook.getSheetAt(sheetIndex);for (Row row : sheet) {Cell cell = row.createCell(columnIndex);cell.setCellFormula(formula);}workbook.write(fos);}}}```#### 3.格式化列```java// 格式化列涉及到创建单元格样式,并对列中的所有单元格应用这个样式```### 结论使用Java对Excel进行列操作是一个强大且灵活的过程,可以满足各种数据处理需求。

通过实例跟我学如何应用Java操作Excel表格——使用Apache Jakarta POI项目操作Excel电子表格文件的应用实例

通过实例跟我学如何应用Java操作Excel表格——使用Apache Jakarta POI项目操作Excel电子表格文件的应用实例

1.1通过代码实例跟我学如何应用Java操作Excel电子表格——使用Apache Jakarta POI项目操作Excel电子表格文件的应用实例1.1.1在Java程序中操作微软Office中的EXCEL电子表格的应用技术1、技术开发背景(1)MS Excel应用十分普及MS的电子表格(Excel)是Office的重要成员,是保存统计数据的一种常用格式。

作为办公文档,势必要涉及到的电子文档的交换,Excel是一种在企业中非常通用的文件格式,打印和管理也比较方便。

在一个Java应用中,将一部分数据生成Excel格式,是与其他系统无缝连接的重要手段。

(2)为Web方式的数据报表及打印提供另一种解决方案对于程序员特别是从事信息管理编程的程序员来说,报表打印是整个编程过程中最麻烦但又必须做的事情,我们常用的方法就是:1)将数据库记录导出到Excell中;2)利用各种报表工具(如CrystalReport或ActiveReport等)生成报表文件然后再在程序中调用;3)辅助Active打印插件定制格式,直接打印窗体;对于第三种方法一般是特别行业(即报表格式及数据不许修改)需要的,比如财务报表和政策法规或支付凭证等;对第一种方法对普遍的行业适用,我们在下面重点介绍怎样将数据表中的各个记录导入到微软的Excel 中并怎样控件Excel单元格式以便做出合适的报表。

(3)在Java程序中实现对Excel文档中的数据进行分析、搜集、处理是很有用途的用户的临时数据保存在Excel中由于用户常常在系统中需要录入相当量的数据,这些数据一般以某种特定的格式保存。

而Excel正是一种相当规格的数据保存方式,至少它是易于格式化的,而且客户也能够按照某种特定的格式来将数据录入到Excel文件中去。

那我们就需要了解如何将用户保存在Excel中的数据获得。

需要对用户保存在Excel中的数据进行处理,然后再写入到数据库表中我们希望用户将资料录入Excel的目的往往只有一个就是将这些数据导入到数据库中去。

通过代码实例跟我学如何应用Java操作Excel电子表格——应用JXL系统库操作Excel电子表格的应用实例

通过代码实例跟我学如何应用Java操作Excel电子表格——应用JXL系统库操作Excel电子表格的应用实例

1.1通过代码实例跟我学如何应用Java操作Excel电子表格——应用JXL 系统库操作Excel电子表格的应用实例1.1.1JXL系统库相关的应用技术jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API 可供使用,一个是POI,一个是jExcelAPI。

其中功能相对POI比较弱一点。

但jExcelAPI 对中文支持非常好,API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。

另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。

在项目中使用jxl需要加载jxl的系统库jxl.jar文件,并将它放入项目的classpath 路径中。

1、新建一个Java应用程序项目2、在项目中导入jxl的系统库jar包文件3、创建CreateExcel程序类文件在本项目jxldemo中的test包中创建一个生成Excel的类,类名为CreateExcel。

该类拟生成一个名为“test.xls”的Excel文件,其中第一个工作表被命名为“第一页”。

4、CreateExcelDemo程序代码package com.px1987.jexcelapi;import java.io.*;import jxl.Workbook;import jxl.write.*;public class CreateExcelDemo {public CreateExcelDemo() throws IOException,WriteException {//在项目所在的根目录下创建一个名称为excelData.xls的Excel 文件WritableWorkbook oneExcelBook = Workbook.createWorkbook(new File("excelData.xls"));//生成名为“2009年销售指标”的工作表,参数0表示这是第一页WritableSheet oneSheetInBook = oneExcelBook.createSheet( "2009年销售指标", 0); //通过Label对象的构造方法中指明单元格位置是第一列第一行以及单元格的数据内容为“销售量”Label oneCell = new Label(0, 0, "销售量" );oneSheetInBook.addCell(oneCell); //将定义好的单元格添加到工作表中//再生成一个单元格,位置为第二列第一行以及单元格的数据内容为“我们所添加的内容”Label twoCell = new Label(1, 0, "我们所添加的内容" );oneSheetInBook.addCell(twoCell); //将定义好的单元格添加到工作表中oneExcelBook.write(); //将所创建出的Excel文件保存到磁盘文件中oneExcelBook.close(); //关闭文件输出流以真正地完成数据输出操作}public static void main(String[] args) throws IOException,WriteException{new CreateExcelDemo();}}5、读取Excel文件中数据的程序代码示例package com.px1987.jexcelapi;import java.io.*;import jxl.*;import jxl.read.biff.BiffException;public class ReadExcelDemo {public ReadExcelDemo() throws BiffException,IOException{Workbook oneExcelBook = Workbook.getWorkbook(new File("excelData.xls"));Sheet firstSheet = oneExcelBook.getSheet(0); //获得第一个工作表对象Cell oneCell1 = firstSheet.getCell(0 , 0); //获得工作表中的第一列第一行的单元格String cellContent = oneCell1.getContents(); //获得该单元格中的内容System.out.println(cellContent);oneExcelBook.close();}public static void main(String[] args) throws BiffException,IOException{new ReadExcelDemo();}}6、修改Excel文件中数据的程序代码示例利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,其他操作和创建Excel是一样的。

java操作EXCEL表格经典例子详解

Microsoft的Office系列产品拥有大量的用户,Word、Excel也成为办公文件的首选。

在Java 中,已经有很多对于Word、Excel的开源的解决方案,其中比较出色的是Apache的Jakata 项目的POI子项目。

该项目的官方网站是/poi/。

POI包括一系列的API,它们可以操作基于MicroSoft OLE2Compound Document Format的各种格式文件,可以通过这些API在Java中读写Excel、Word等文件。

POI是完全的Java Excel 和Java Word解决方案。

POI子项目包括:POIFS、HSSF、HDF、HPSF。

表7-2对它们进行了简要介绍。

表7-2POI子项目介绍子项目名说明POIFS(POI File System)POIFS是POI项目中最早的最基础的一个模块,是Java到OLE2Compound Document Format 的接口,支持读写功能,所有的其他项目都依赖与该项目。

HSSF(Horrible Spreadsheet Format)HSSF是Java到Microsoft Excel97(-2002)文件的接口,支持读写功能HWPF(Horrible Word Processing Format)HWPF是Java到Microsoft Word97文件的接口,支持读写功能,但目前该模块还处于刚开始开发阶段,只能实现一些简单文件的操作,在后续版本中,会提供更强大的支持HPSF(Horrible Property Set Format)HPSF是Java到OLE2Compound Document Format文件的属性设置的接口,属性设置通常用来设置文档的属性(标题,作者,最后修改日期等),还可以设置用户定义的属性。

HPSF支持读写功能,当前发布版本中直支持读功能。

7.3.1对Excel的处理类下面通过HSSF提供的接口对Excel文件经行处理。

通过实例跟我学如何应用Java操作Excel表格——在J2EE Web应用系统中应用POI操作Excel电子表格的应用实例

杨教授工作室,版权所有,盗版必究, 5/13 页
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
throws ServletException, IOException { request.setCharacterEncoding("gb2312"); String cellColor=request.getParameter("cellColor"); String tableName=request.getParameter("tableName"); String cellText=request.getParameter("cellText"); CreateExcelInterface oneExcelContentBean=new CreateExcelFileImple(); HSSFWorkbook oneWorkBook=null; try {
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
1.1
通过代码实例跟我学如何应用 Java 操作 Excel 电子表格——在 J2EE Web
应用系统中应用 POI 操作 Excel 电子表格的应用实例
下面利用 POI 在服务器端对我们指定的 Excel 文件的内容进行处理, 然后将处理后的结 果用流的形式从服务器输出,并在客户端 PC 相应地启动电子表格浏览器。 1、新建一个 Web 项目 POIWebApp
2、在该 Web 应用中添,版权所有,盗版必究, 1/13 页
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
3、在 Web 应用中创建一个 JSP 页面 (1)index.jsp 页面
(2)设计该页面的内容----在该页面中提供一个表单 <%@ page language="java" pageEncoding="gb2312"%> <% String path = request.getContextPath(); String basePath =

JXL操作Excel部分详解(java)

JXL操作Excel部分详解(java)// 打开⽂件WritableWorkbook book = Workbook.createWorkbook( new File( " test.xls " ));// ⽣成名为“第⼀页”的⼯作表,参数0表⽰这是第⼀页WritableSheet sheet = book.createSheet( " 第⼀页 " , 0 );// 在Label对象的构造⼦中指名单元格位置是第⼀列第⼀⾏(0,0)// 以及单元格内容为testLabel label = new Label( 0 , 0 , " test " );// 将定义好的单元格添加到⼯作表中sheet.addCell(label);/** ⽣成⼀个保存数字的单元格必须使⽤Number的完整包路径,否则有语法歧义单元格位置是第⼆列,第⼀⾏,值为789.123 */jxl.write.Number number = new jxl.write.Number( 1 , 0 , 555.12541 );sheet.addCell(number);// 写⼊数据并关闭⽂件book.write();book.close();// 获得第⼀个⼯作表对象Sheet sheet = book.getSheet( 0 );// 得到第⼀列第⼀⾏的单元格Cell cell1 = sheet.getCell( 0 , 0 );String result = cell1.getContents();System.out.println(result);// Excel获得⽂件Workbook wb = Workbook.getWorkbook( new File( " test.xls " ));// 打开⼀个⽂件的副本,并且指定数据写回到原⽂件WritableWorkbook book = Workbook.createWorkbook( new File( " test.xls " ),wb);// 添加⼀个⼯作表WritableSheet sheet = book.createSheet( " 第⼆页 " , 1 );sheet.addCell( new Label( 0 , 0 , " 第⼆页的测试数据 " ));book.write();book.close();WritableSheet.mergeCells( int m, int n, int p, int q);// 作⽤是从(m,n)到(p,q)的单元格全部合并,⽐如:WritableSheet sheet = book.createSheet(“第⼀页”, 0 );// 合并第⼀列第⼀⾏到第六列第⼀⾏的所有单元格sheet.mergeCells( 0 , 0 , 5 , 0 );Workbook book = Workbook.getWorkbook( new File( " 测试1.xls " ));// 获得第⼀个⼯作表对象Sheet sheet = book.getSheet( 0 );// 得到第⼀列第⼀⾏的单元格int columnum = sheet.getColumns(); // 得到列数int rownum = sheet.getRows(); // 得到⾏数System.out.println(columnum);System.out.println(rownum);for ( int i = 0 ; i < rownum; i ++ ) // 循环进⾏读写 {for ( int j = 0 ; j < columnum; j ++ ) {Cell cell1 = sheet.getCell(j, i);String result = cell1.getContents();System.out.print(result);System.out.print( " \t " );}System.out.println();}book.close();。

利用java操作Excel文件

利用java操作Excel文件很久以来都想研究一下利用java操作Excel的方法,今天没事,就稍微了解了一下,特总结一下。

利用java操作Excel,有个开源的东东-jxl.jar,可以到/project/showfiles.php?group_id=79926下载。

一.读取Excel文件内容java 代码1./**读取Excel文件的内容2. * @param file 待读取的文件3. * @return4. */5.public static String readExcel(File file){6. StringBuffer sb = new StringBuffer();7.8. Workbook wb = null;9. try {10. //构造Workbook(工作薄)对象11. wb=Workbook.getWorkbook(file);12. } catch (BiffException e) {13. e.printStackTrace();14. } catch (IOException e) {15. e.printStackTrace();16. }17.18. if(wb==null)19. return null;20.21. //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了22. Sheet[] sheet = wb.getSheets();23.24. if(sheet!=null&&sheet.length>0){25. //对每个工作表进行循环26. for(int i=0;i27. //得到当前工作表的行数28. int rowNum = sheet[i].getRows();29. for(int j=0;j30. //得到当前行的所有单元格31. Cell[] cells = sheet[i].getRow(j);32. if(cells!=null&&cells.length>0){33. //对每个单元格进行循环34. for(int k=0;k35. //读取当前单元格的值36. String cellValue = cells[k].getContents();37. sb.append(cellValue+"\t");38. }39. }40. sb.append("\r\n");41. }42. sb.append("\r\n");43. }44. }45. //最后关闭资源,释放内存46. wb.close();47. return sb.toString();48.}二.写入Excel文件这里有很多格式了,比如文本内容加粗,加上某些颜色等,可以参考jxl的api,同时还推荐一篇不错的文章:/developerworks/cn/java/l-javaExcel/?ca=j-t10java 代码1./**生成一个Excel文件2. * @param fileName 要生成的Excel文件名3. */4. public static void writeExcel(String fileName){5. WritableWorkbook wwb = null;6. try {7. //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象8. wwb = Workbook.createWorkbook(new File(fileName));9. } catch (IOException e) {10. e.printStackTrace();11. }12. if(wwb!=null){13. //创建一个可写入的工作表14. //Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置15. WritableSheet ws = wwb.createSheet("sheet1", 0);16.17. //下面开始添加单元格18. for(int i=0;i<10;i++){19. for(int j=0;j<5;j++){20. //这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行21. Label labelC = new Label(j, i, "这是第"+(i+1)+"行,第"+(j+1)+"列");22. try {23. //将生成的单元格添加到工作表中24. ws.addCell(labelC);25. } catch (RowsExceededException e) {26. e.printStackTrace();27. } catch (WriteException e) {28. e.printStackTrace();29. }30.31. }32. }33.34. try {35. //从内存中写入文件中36. wwb.write();37. //关闭资源,释放内存38. wwb.close();39. } catch (IOException e) {40. e.printStackTrace();41. } catch (WriteException e) {42. e.printStackTrace();43. }44. }45. }三.在一个Excel文件中查找是否包含某一个关键字java 代码1./**搜索某一个文件中是否包含某个关键字2. * @param file 待搜索的文件3. * @param keyWord 要搜索的关键字4. * @return5. */6. public static boolean searchKeyWord(File file,StringkeyWord){7. boolean res = false;8.9. Workbook wb = null;10. try {11. //构造Workbook(工作薄)对象12. wb=Workbook.getWorkbook(file);13. } catch (BiffException e) {14. return res;15. } catch (IOException e) {16. return res;17. }18.19. if(wb==null)20. return res;21.22. //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了23. Sheet[] sheet = wb.getSheets();24.25. boolean breakSheet = false;26.27. if(sheet!=null&&sheet.length>0){28. //对每个工作表进行循环29. for(int i=0;i30. if(breakSheet)31. break;32.33. //得到当前工作表的行数34. int rowNum = sheet[i].getRows();35.36. boolean breakRow = false;37.38. for(int j=0;j39. if(breakRow)40. break;41. //得到当前行的所有单元格42. Cell[] cells = sheet[i].getRow(j);43. if(cells!=null&&cells.length>0){44. boolean breakCell = false;45. //对每个单元格进行循环46. for(int k=0;k47. if(breakCell)48. break;49. //读取当前单元格的值50. String cellValue = cells[k].getContents();51. if(cellValue==null)52. continue;53. if(cellValue.contains(keyWord)){54. res = true;55. breakCell = true;56. breakRow = true;57. breakSheet = true;58. }59. }60. }61. }62. }63. }64. //最后关闭资源,释放内存65. wb.close();66.67. return res;68. }四.往Excel中插入图片图标插入图片的实现很容易,参看以下代码:java 代码1./**往Excel中插入图片2. * @param dataSheet 待插入的工作表3. * @param col 图片从该列开始4. * @param row 图片从该行开始5. * @param width 图片所占的列数6. * @param height 图片所占的行数7. * @param imgFile 要插入的图片文件8. */9.public static void insertImg(WritableSheet dataSheet, intcol, int row, int width,10. int height, File imgFile){11. WritableImage img = new WritableImage(col, row, width, height, imgFile);12. dataSheet.addImage(img);13.}以上代码的注释已经很清楚了,大概也就不用再解释了,我们可以用如下程序验证:java 代码1. try {2. //创建一个工作薄3.WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls"));4.//待插入的工作表5.WritableSheet imgSheet = workbook.createSheet("Images",0);6.//要插入的图片文件7.File imgFile = new File("D:/1.png");8.//图片插入到第二行第一个单元格,长宽各占六个单元格9.insertImg(imgSheet,0,1,6,6,imgFile);10.workbook.write();11.workbook.close();12. catch (IOException e) {13. e.printStackTrace();14. catch (WriteException e) {15. e.printStackTrace();但是jxl只支持png格式的图片,jpg格式和gif格式都不支持五.插入页眉页脚一般的页眉页脚都分为三个部分,左,中,右三部分,利用如下代码可实现插入页眉页脚java 代码1./**向Excel中加入页眉页脚2. * @param dataSheet 待加入页眉的工作表3. * @param left4. * @param center5. * @param right6. */7.public static void setHeader(WritableSheet dataSheet,String left,String center,String right){8. HeaderFooter hf = new HeaderFooter();9. hf.getLeft().append(left);10. hf.getCentre().append(center);11. hf.getRight().append(right);12. //加入页眉13. dataSheet.getSettings().setHeader(hf);14. //加入页脚15. //dataSheet.getSettings().setFooter(hf);16.}我们可以用如下代码测试该方法:java 代码1. try {2. //创建一个工作薄3. WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls"));4. //待插入的工作表5. WritableSheet dataSheet = workbook.createSheet("加入页眉",0);6. ExcelUtils.setHeader(dataSheet, "chb", "2007-03-06","第1页,共3页");7. workbook.write();8. workbook.close();9.} catch (IOException e) {10. e.printStackTrace();11.} catch (WriteException e) {12. e.printStackTrace();13.}14. }。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档