`

<转>Java读写Excel

阅读更多

转自http://coolshell.cn/articles/1954.html

本文主要向你演示如何使用JavaExcel API来读写Excel文件。关于JavaExcel API,这是一个开源的lib库。其相关的feature如下:

  • 支持Excel 95, 97, 2000, XP, 2003 的制表页。
  • 可以读写相关的Excel公式 (仅支持Excel 97 及以后版本)
  • 可以生成 Excel 2000 格式的xls文件。
  • 支持字体,数字和日期格式。
  • 支持单元格的阴影,边框和颜色。
  • 可以修改已存在的制表页。
  • 国际化多语言集。(公式目前支持,英文,法文,西班牙文和德文)
  • 支持图表拷贝。
  • 支持图片的插入和复制。
  • 日志生成可以使用Jakarta Commons Logging, log4j, JDK 1.4 Logger, 等。
  • 更多……

    你可以在这里下载:http://jexcelapi.sourceforge.net/,然后,把jxl.jar加到你的Java的classpath中。

    下面是两段例程,一段是如何创建Excel,一段是如何读取Excel。

     

    创建Excel

     
    package writer;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.Locale;
    
    import jxl.CellView;
    import jxl.Workbook;
    import jxl.WorkbookSettings;
    import jxl.format.UnderlineStyle;
    import jxl.write.Formula;
    import jxl.write.Label;
    import jxl.write.Number;
    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 WriteExcel {
    
    	private WritableCellFormat timesBoldUnderline;
    	private WritableCellFormat times;
    	private String inputFile;
    
    public void setOutputFile(String inputFile) {
    	this.inputFile = inputFile;
    	}
    
    	public void write() throws IOException, WriteException {
    		File file = new File(inputFile);
    		WorkbookSettings wbSettings = new WorkbookSettings();
    
    		wbSettings.setLocale(new Locale("en", "EN"));
    
    		WritableWorkbook workbook = Workbook.createWorkbook(file, wbSettings);
    		workbook.createSheet("Report", 0);
    		WritableSheet excelSheet = workbook.getSheet(0);
    		createLabel(excelSheet);
    		createContent(excelSheet);
    
    		workbook.write();
    		workbook.close();
    	}
    
    	private void createLabel(WritableSheet sheet)
    			throws WriteException {
    		// Lets create a times font
    		WritableFont times10pt = new WritableFont(WritableFont.TIMES, 10);
    		// Define the cell format
    		times = new WritableCellFormat(times10pt);
    		// Lets automatically wrap the cells
    		times.setWrap(true);
    
    		// Create create a bold font with unterlines
    		WritableFont times10ptBoldUnderline = new WritableFont(
    				WritableFont.TIMES, 10, WritableFont.BOLD, false,
    				UnderlineStyle.SINGLE);
    		timesBoldUnderline = new WritableCellFormat(times10ptBoldUnderline);
    		// Lets automatically wrap the cells
    		timesBoldUnderline.setWrap(true);
    
    		CellView cv = new CellView();
    		cv.setFormat(times);
    		cv.setFormat(timesBoldUnderline);
    		cv.setAutosize(true);
    
    		// Write a few headers
    		addCaption(sheet, 0, 0, "Header 1");
    		addCaption(sheet, 1, 0, "This is another header");
    
    	}
    
    	private void createContent(WritableSheet sheet) throws WriteException,
    			RowsExceededException {
    		// Write a few number
    		for (int i = 1; i < 10; i++) {
    			// First column
    			addNumber(sheet, 0, i, i + 10);
    			// Second column
    			addNumber(sheet, 1, i, i * i);
    		}
    		// Lets calculate the sum of it
    		StringBuffer buf = new StringBuffer();
    		buf.append("SUM(A2:A10)");
    		Formula f = new Formula(0, 10, buf.toString());
    		sheet.addCell(f);
    		buf = new StringBuffer();
    		buf.append("SUM(B2:B10)");
    		f = new Formula(1, 10, buf.toString());
    		sheet.addCell(f);
    
    		// Now a bit of text
    		for (int i = 12; i < 20; i++) {
    			// First column
    			addLabel(sheet, 0, i, "Boring text " + i);
    			// Second column
    			addLabel(sheet, 1, i, "Another text");
    		}
    	}
    
    	private void addCaption(WritableSheet sheet, int column, int row, String s)
    			throws RowsExceededException, WriteException {
    		Label label;
    		label = new Label(column, row, s, timesBoldUnderline);
    		sheet.addCell(label);
    	}
    
    	private void addNumber(WritableSheet sheet, int column, int row,
    			Integer integer) throws WriteException, RowsExceededException {
    		Number number;
    		number = new Number(column, row, integer, times);
    		sheet.addCell(number);
    	}
    
    	private void addLabel(WritableSheet sheet, int column, int row, String s)
    			throws WriteException, RowsExceededException {
    		Label label;
    		label = new Label(column, row, s, times);
    		sheet.addCell(label);
    	}
    
    	public static void main(String[] args) throws WriteException, IOException {
    		WriteExcel test = new WriteExcel();
    		test.setOutputFile("c:/temp/lars.xls");
    		test.write();
    		System.out
    				.println("Please check the result file under c:/temp/lars.xls ");
    	}
    }
     
  •  

    读取Excel
     

    package reader;
    
    import java.io.File;
    import java.io.IOException;
    
    import jxl.Cell;
    import jxl.CellType;
    import jxl.Sheet;
    import jxl.Workbook;
    import jxl.read.biff.BiffException;
    
    public class ReadExcel {
    
    	private String inputFile;
    
    	public void setInputFile(String inputFile) {
    		this.inputFile = inputFile;
    	}
    
    	public void read() throws IOException  {
    		File inputWorkbook = new File(inputFile);
    		Workbook w;
    		try {
    			w = Workbook.getWorkbook(inputWorkbook);
    			// Get the first sheet
    			Sheet sheet = w.getSheet(0);
    			// Loop over first 10 column and lines
    
    			for (int j = 0; j < sheet.getColumns(); j++) {
    				for (int i = 0; i < sheet.getRows(); i++) {
    					Cell cell = sheet.getCell(j, i);
    					CellType type = cell.getType();
    					if (cell.getType() == CellType.LABEL) {
    						System.out.println("I got a label "
    								+ cell.getContents());
    					}
    
    					if (cell.getType() == CellType.NUMBER) {
    						System.out.println("I got a number "
    								+ cell.getContents());
    					}
    
    				}
    			}
    		} catch (BiffException e) {
    			e.printStackTrace();
    		}
    	}
    
    	public static void main(String[] args) throws IOException {
    		ReadExcel test = new ReadExcel();
    		test.setInputFile("c:/temp/lars.xls");
    		test.read();
    	}
    
    }
     
  • 分享到:
    评论

    相关推荐

      把excel导入List中行也为list

      1. **Java POI库**:Apache POI 是一个开源项目,提供了一组API用于读写Microsoft Office格式的文件,包括Excel。在Java中处理Excel文件,我们通常会用到POI库。 2. **Sheet和Row对象**:在POI中,Excel工作簿...

      java读写Excel文件所需jar包

      "java读写Excel文件所需jar包"这个主题,主要涉及的是如何选择和使用这些库。下面将详细讲解两个广泛使用的Java Excel处理库:Apache POI和JExcelApi,以及它们的基本用法。 1. Apache POI Apache POI 是一个开源...

      Java读写Excel实例分享

      以下是一个使用Apache POI进行Java读写Excel的实例。 首先,我们需要引入Apache POI的相关依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml &lt;dependency&gt; &lt;groupId&gt;org.apache.poi&lt;/groupId&gt; ...

      Java JDK实例宝典

      &lt;br&gt;第1章 Java基础 &lt;br&gt;1.1 转换基本数据类型 &lt;br&gt;1.2 Java的运算符 &lt;br&gt;1.3 控制程序的流程 &lt;br&gt;1.4 计算阶乘 &lt;br&gt;1.5 实现命令行程序 &lt;br&gt;第2章 Java面向对象程序设计 &lt;br&gt;2. 1 复数类 &lt;br&gt;2. 2 equals.chashCode...

      Java读写Excel(基于xxl-excel)

      Java读写Excel是一项常见的任务,尤其在数据处理和报表生成中。Xxl-Excel是一个流行的Java库,专门用于处理Excel文件,提供了简单易用的API,使得开发人员能够方便地进行Excel的读取和写入操作。在这个示例中,我们...

      JAVA读写EXCEl下载直接用

      标题"JAVA读写EXCEL下载直接用"暗示我们将讨论如何直接使用Java来读写Excel文件,而无需安装额外的软件。Apache POI项目提供的API简化了这一过程,你可以在项目中直接引入对应的jar包,如压缩包中的"poi-bin-3[1].0-...

      java读取excel文件,并绘制统计图分析excel内的成绩分布情况

      Apache POI是Java社区开发的一个开源库,它提供了API来读写Microsoft Office格式的文件,包括Excel(.xls和.xlsx)。首先,我们需要在项目中引入Apache POI库。如果你使用Maven,可以在pom.xml文件中添加以下依赖: ...

      java中将数据和图片导出到Excel文件

      这里主要涉及的库为Apache POI,这是一个用于读写Microsoft Office格式文件(如Excel)的开源库。可以通过Maven或直接下载jar包的方式添加到项目中。 1. **Maven方式**: ```xml &lt;dependency&gt; &lt;groupId&gt;org....

      Excel文件读写

      在IT行业中,处理数据是日常任务之一,而Excel作为广泛使用的电子表格软件,其文件的读写能力至关重要。本文将详细讲解如何使用Apache POI库来处理2003和2010版本的Excel文件。 Apache POI是Java领域中一个强大的库...

      java根据excel生成 hive建表语句

      首先,Apache POI是Java中处理Microsoft Office文档的库,特别适合读写Excel文件。在本项目中,你需要导入相应的POI依赖库到你的Java项目中,这通常可以通过Maven或Gradle完成。例如,在Maven的pom.xml文件中添加...

      java excel转html

      JExcelAPI则是一个轻量级的库,主要用于读写Excel文件,它的使用相对简单,但功能可能没有Apache POI全面。 1. **Apache POI**: - **读取Excel文件**: 使用`XSSFWorkbook`(针对.xlsx文件)或`HSSFWorkbook`...

      java实现Excel导出

      Apache POI是一个开源项目,它提供了API来读写Microsoft Office格式的文件,包括Excel(.xls和.xlsx)。对于老版本的Excel(97-2003)文件,我们可以使用HSSF(Horrible Spreadsheet Format)API;对于新版本的Excel...

      java 处理Excel 带 List

      首先,我们需要一个库来操作Excel,Apache POI是一个广泛使用的开源Java API,专门用于读写Microsoft Office格式的文件,包括Excel。使用Apache POI,我们可以创建、修改和读取Excel文件。安装POI库后,我们就可以...

      java POI读取Excel文件基本用法Demo

      总结来说,Java POI库是Java平台上的强大工具,用于读写Excel文件。通过学习这个基本用法的示例,开发者能够轻松地从Excel文件中提取数据,进行分析或集成到其他业务流程中。结合实际项目需求,你可以利用Java POI...

      java读写excel

      Java读写Excel是一项常见的任务,特别是在数据处理、报表生成或数据导入导出场景中。jsx提供的Excel组件为Java开发者提供了一种便捷的方式来操作Excel文件。本文将深入探讨使用jsx库在纯JSP环境下进行Excel的读写...

      java实现Excel导入(POI)

      Apache POI是一个流行的库,它允许开发者读写Microsoft Office格式的文件,包括Excel(.xls和.xlsx)。本篇文章将详细介绍如何使用POI库在Java中实现Excel的导入功能。 **一、Apache POI简介** Apache POI是一个...

      java poi 读写Excel jar包

      在标题"java poi 读写Excel jar包"中,我们关注的核心知识点是Java POI库的使用,以及如何在Java程序中处理Excel文件的读写操作。要实现这些功能,你需要下载相应的jar包。描述中提到的链接指向了一个CSDN博客文章,...

      java解析excel表格

      Apache POI是一个开源的Java API,专门用于读写Microsoft Office格式的文件,包括Excel。 首先,我们需要在项目中引入Apache POI的依赖。这通常通过Maven或Gradle构建工具完成,添加相应的依赖配置。例如,在Maven...

      java读写excel文件

      在Java编程中,读写Excel文件是一项常见的任务,特别是在数据处理、数据分析或报表生成的场景下。本篇文章将深入探讨如何使用Java进行Excel文件的读取与写入操作,主要聚焦于Apache POI库,这是一个广泛使用的开源...

    Global site tag (gtag.js) - Google Analytics