`
g21121
  • 浏览: 694623 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java excel工具

    博客分类:
  • java
 
阅读更多

直接上代码,一看就懂,利用的是jxl:

import java.io.File;
import java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableImage;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

/**
 * Excel表格工具
 * 
 * @author liming
 * @version 1.0 2011-3-31
 * @since JDK 1.6
 */
public class ExcelUtils {

	public static String readExcel(File file) {
		StringBuffer sb = new StringBuffer();

		Workbook wb = null;
		try {
			// 构造Workbook(工作薄)对象
			wb = Workbook.getWorkbook(file);
		} catch (BiffException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		if (wb == null)
			return null;

		// 获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了
		Sheet[] sheet = wb.getSheets();

		if (sheet != null && sheet.length > 0) {
			// 对每个工作表进行循环
			for (int i = 0; i < sheet.length; i++) {
				// 得到当前工作表的行数
				int rowNum = sheet[i].getRows();
				for (int j = 0; j < rowNum; j++) {
					// 得到当前行的所有单元格
					Cell[] cells = sheet[i].getRow(j);
					if (cells != null && cells.length > 0) {
						// 对每个单元格进行循环
						for (int k = 0; k < cells.length; k++) {
							// 读取当前单元格的值
							String cellValue = cells[k].getContents();
							sb.append(cellValue + "\t");
						}
					}
					sb.append("\r\n");
				}
				sb.append("\r\n");
			}
		}
		// 最后关闭资源,释放内存
		wb.close();
		return sb.toString();
	}

	/**
	 * 生成一个Excel文件
	 * 
	 * @param fileName
	 *            要生成的Excel文件名
	 */
	public static void writeExcel(String fileName) {
		WritableWorkbook wwb = null;
		try {
			// 首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
			wwb = Workbook.createWorkbook(new File(fileName));
		} catch (IOException e) {
			e.printStackTrace();
		}
		if (wwb != null) {
			// 创建一个可写入的工作表
			// Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置
			WritableSheet ws = wwb.createSheet("sheet1", 0);

			// 下面开始添加单元格
			for (int i = 0; i < 10; i++) {
				for (int j = 0; j < 5; j++) {
					// 这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
					Label labelC = new Label(j, i, "这是第" + (i + 1) + "行,第" + (j + 1) + "列");
					try {
						// 将生成的单元格添加到工作表中
						ws.addCell(labelC);
					} catch (RowsExceededException e) {
						e.printStackTrace();
					} catch (WriteException e) {
						e.printStackTrace();
					}

				}
			}

			try {
				// 从内存中写入文件中
				wwb.write();
				// 关闭资源,释放内存
				wwb.close();
			} catch (IOException e) {
				e.printStackTrace();
			} catch (WriteException e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * 搜索某一个文件中是否包含某个关键字
	 * 
	 * @param file
	 *            待搜索的文件
	 * @param keyWord
	 *            要搜索的关键字
	 * @return
	 */
	public static boolean searchKeyWord(File file, String keyWord) {
		boolean res = false;

		Workbook wb = null;
		try {
			// 构造Workbook(工作薄)对象
			wb = Workbook.getWorkbook(file);
		} catch (BiffException e) {
			return res;
		} catch (IOException e) {
			return res;
		}

		if (wb == null)
			return res;

		// 获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了
		Sheet[] sheet = wb.getSheets();

		boolean breakSheet = false;

		if (sheet != null && sheet.length > 0) {
			// 对每个工作表进行循环
			for (int i = 0; i < sheet.length; i++) {
				if (breakSheet)
					break;

				// 得到当前工作表的行数
				int rowNum = sheet[i].getRows();

				boolean breakRow = false;

				for (int j = 0; j < rowNum; j++) {
					if (breakRow)
						break;
					// 得到当前行的所有单元格
					Cell[] cells = sheet[i].getRow(j);
					if (cells != null && cells.length > 0) {
						boolean breakCell = false;
						// 对每个单元格进行循环
						for (int k = 0; k < cells.length; k++) {
							if (breakCell)
								break;
							// 读取当前单元格的值
							String cellValue = cells[k].getContents();
							if (cellValue == null)
								continue;
							if (cellValue.contains(keyWord)) {
								res = true;
								breakCell = true;
								breakRow = true;
								breakSheet = true;
							}
						}
					}
				}
			}
		}
		// 最后关闭资源,释放内存
		wb.close();

		return res;
	}

	/**
	 * 往Excel中插入图片
	 * 
	 * @param dataSheet
	 *            待插入的工作表
	 * @param col
	 *            图片从该列开始
	 * @param row
	 *            图片从该行开始
	 * @param width
	 *            图片所占的列数
	 * @param height
	 *            图片所占的行数
	 * @param imgFile
	 *            要插入的图片文件
	 */
	public static void insertImg(WritableSheet dataSheet, int col, int row, int width, int height, File imgFile) {
		WritableImage img = new WritableImage(col, row, width, height, imgFile);
		dataSheet.addImage(img);
	}

	public static void main(String[] args) {

		/*
		 * try { //创建一个工作薄 WritableWorkbook workbook =
		 * Workbook.createWorkbook(new File("D:/test1.xls")); //待插入的工作表
		 * WritableSheet imgSheet = workbook.createSheet("Images",0); //要插入的图片文件
		 * File imgFile = new File("D:/login_jc.png");
		 * //图片插入到第二行第一个单元格,长宽各占六个单元格 insertImg(imgSheet,0,1,10,20,imgFile);
		 * workbook.write(); workbook.close(); } catch (IOException e) {
		 * e.printStackTrace(); } catch (WriteException e) {
		 * e.printStackTrace(); }
		 */

		// System.out.println(readExcel(new File("d:/test1.xls")));
		// System.out.println(searchKeyWord(new File("d:/test1.xls"), "张三"));
		writeExcel("d:/kkk.xls");

	}

}

 

  • jxl.jar (708.7 KB)
  • 下载次数: 5
分享到:
评论

相关推荐

    java Excel工具类,导入导出Excel数据

    java Excel工具类,导入导出Excel数据,导入数据对合并表格有判断获取数据,导出数据到Excel,Excel文件不存在会创建。 博客:https://blog.csdn.net/qq_37902949/article/details/81230640

    java Excel工具类与LIB

    Java Excel工具类与LIB指的是在Java编程环境中处理Excel文件的一系列方法和库。这些工具能够帮助开发者轻松地创建、读取、修改Excel文件,并且能够将Excel数据转换为Java对象,反之亦然。这里提到的"XLSUtils.java...

    ExcelUtil java excel工具类

    ExcelUtil java excel工具类

    java操作excel工具类

    Java操作Excel工具类是开发过程中常见的一种需求,尤其是在数据导入导出、数据分析或者报表生成的场景下。在Java中,我们可以使用多种库来处理Excel文件,例如Apache POI、JExcelAPI、OpenCSV等。本篇文章将重点介绍...

    java-excel(工具类).zip

    Java Excel工具类主要涉及到在Java应用中处理Microsoft Excel文件的操作,包括数据的导入和导出。这个zip文件包含了两个核心的Java源代码文件:ExcelUtils.java和ExcelController.java,它们分别对应于工具类和控制...

    Java poi导入导出EXCEL工具类(兼容各版本)

    概述:Java poi导入导出EXCEL工具类(兼容各版本) 一、功能说明 允许同时导入或导出多个sheet,同一sheet可同时存在多个数据块,按数据块划分处理数据。 二、配置文件示例及详细说明 1、导入xml配置示例如下(见...

    easyexcel-好用的java Excel工具

    好用的java Excel工具,代替poi easyexcel重写了poi对07版Excel的解析,能够原本一个3M的excel用POI sax依然需要100M左右内存降低到KB级别,并且再大的excel不会出现内存溢出,03版依赖POI的sax模式。在上层做了模型...

    java 写Excel工具类

    本篇文章将详细介绍如何利用Java编写一个Excel工具类,以便于高效地操作Excel文件。 首先,我们需要引入一个Java处理Excel的库,Apache POI是一个广泛使用的开源库,它提供了API来创建、修改和读取Microsoft Office...

    java Excel相关处理 工具类 java Excel相关处理 工具类

    java Excel相关处理 工具类 java Excel相关处理 工具类java Excel相关处理 工具类 java Excel相关处理 工具类java Excel相关处理 工具类 java Excel相关处理 工具类java Excel相关处理 工具类 java Excel相关处理 ...

    一个实用的java导入导出Excel工具类,基于开源的Java Excel API(JXL)纯java类库实现。.zip

    Java Excel API (JXL) 是一个广泛使用的...总之,这个基于JXL的Java Excel工具类为Java开发者提供了一个高效、灵活的方式来处理Excel数据。理解其背后的原理和使用方法,将有助于开发出更加健壮的Excel数据处理系统。

    Java中Excel转图片工具包(纯java)

    "Java中Excel转图片工具包(纯java)"就是这样一个解决方案,它实现了将Excel文件通过PDF中间格式转化为图片的功能。 首先,让我们了解一下这个工具包的工作原理。Excel文件本身并不直接支持转换为图片格式,但可以...

    java导出Excel工具类和支持包

    本资源包含一个名为`ExportExcelUtil.java`的Java工具类,专门用于处理这种任务,以及`poi3.7.zip`,这是一个Apache POI库的压缩包,它是Java操作Microsoft Office格式文件(如Excel)的重要支持库。 Apache POI是...

    Java操作excel工具

    Java操作excel工具

    java上传并读取excel工具类

    在Java编程中,处理Excel文件是一项常见的任务,特别是在数据导入导出、数据分析或者报表生成等场景。本篇文章将深入探讨如何使用Java实现Excel文件的上传和读取,重点关注`MultiFile`转换为`File`以及处理多Sheet页...

    java导入导出Excel工具类

    一个实用的java导入导出Excel工具类,基于开源的Java Excel API(JXL)纯java类库实现,Windows和Linux系统下均可使用。 主要实现功能如下: 导出:将List转化为Excel(listToExcel)。 导入:将Excel转化为List...

    java excel转html

    首先,我们需要了解Java中的主要库,如Apache POI和JExcelAPI,它们是用于读取和操作Excel文件的流行工具。Apache POI是一个开源项目,提供了一个强大的API来处理Microsoft Office格式的文件,包括Excel(.xls和....

    java读取excel内容的几种方法工具包

    excel读取主流是poi和jxl,两种方式功能都很全,但是缺乏比较零散。这里CommonUtil类中包含了poi、jxl读取excel的封装类,读取出来后变为list,需要的jar包一起带上了。还附带了excel流的方式下载,以及request内容...

    Java Excel转为PDF(aspose)工具类 复造轮子

    本篇将详细讲解如何利用Aspose.Cells来实现Java中Excel到PDF的转换,以及处理包含图片的单元格。 首先,你需要在项目中引入Aspose.Cells的依赖。如果使用Maven,可以在pom.xml文件中添加如下依赖: ```xml ...

    java使用POI导出 Excel工具类

    java使用POI导出 Excel+图片工具类 ,里面含有poi jar包,只调用接口即可直接保存Excel。使用的时候需先把数据封装,具体包装需根据实际导出数据进行处理。文件demo中只提供包装格式。

    java生成读取excel所需要的jar

    Java生成和读取Excel文件是常见的数据处理任务,特别是在数据导入导出、报表生成和数据分析等领域。Apache POI是一个流行的开源库,它允许Java开发者创建、修改和显示Microsoft Office格式的文件,包括Excel(XLS和...

Global site tag (gtag.js) - Google Analytics