jxl.jar:下载地址:http://download.csdn.net/detail/xuxu198899223/7717737


package excel;

public class BookVO {

    public String bookName;

    public String bookAuthor;

    public String bookPrice;

    public String bookConcern;

    public String getBookName() {
return bookName;
} public void setBookName(String bookName) {
this.bookName = bookName;
} public String getBookAuthor() {
return bookAuthor;
} public void setBookAuthor(String bookAuthor) {
this.bookAuthor = bookAuthor;
} public String getBookPrice() {
return bookPrice;
} public void setBookPrice(String bookPrice) {
this.bookPrice = bookPrice;
} public String getBookConcern() {
return bookConcern;
} public void setBookConcern(String bookConcern) {
this.bookConcern = bookConcern;
} }

2、生成excel文件:

package excel;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import jxl.Workbook;
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; import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem; /**
* 生成excel文件
* @author lizhiyong
* @version $Id: ExcelOpt.java, v 0.1
2014年8月5日 上午11:43:27 Exp $
*/
public class ExcelOpt {
/**
* 生成一个Excel文件 jxl
* @param fileName 要生成的Excel文件名称
* @jxl.jar 版本号:2.6
*/
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("工作表名称", 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();
}
}
} /**
* 生成一个Excel文件POI
* @param inputFile 输入模板文件路径
* @param outputFile 输入文件存放于server路径
* @param dataList 待导出数据
* @throws Exception
* @roseuid:
*/ @SuppressWarnings({ "rawtypes", "deprecation" })
public static void exportExcelFile(String inputFile, String outputFile, List dataList)
throws Exception {
//用模板文件构造poi
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(inputFile));
//创建模板工作表
HSSFWorkbook templatewb = new HSSFWorkbook(fs);
//直接取模板第一个sheet对象
HSSFSheet templateSheet = templatewb.getSheetAt(1);
//得到模板的第一个sheet的第一行对象 为了得到模板样式
HSSFRow templateRow = templateSheet.getRow(0); //HSSFSheet timplateSheet = templatewb.getSheetAt(1);
//取得Excel文件的总列数
int columns = templateSheet.getRow((short) 0).getPhysicalNumberOfCells();
// Debug.println("columns is : " + columns); //=========================
//创建样式数组
HSSFCellStyle styleArray[] = new HSSFCellStyle[columns]; //一次性创建全部列的样式放在数组里
for (int s = 0; s < columns; s++) {
//得到数组实例
styleArray[s] = templatewb.createCellStyle();
}
//循环对每个单元格进行赋值
//定位行
for (int rowId = 1; rowId < dataList.size(); rowId++) {
//依次取第rowId行数据 每个数据是valueList
List valueList = (List) dataList.get(rowId - 1);
//定位列
for (int columnId = 0; columnId < columns; columnId++) {
//依次取出相应与colunmId列的值
//每个单元格的值
String dataValue = (String) valueList.get(columnId);
//取出colunmId列的的style
//模板每一列的样式
HSSFCellStyle style = styleArray[columnId];
//取模板第colunmId列的单元格对象
//模板单元格对象
HSSFCell templateCell = templateRow.getCell((short) columnId);
//创建一个新的rowId行 行对象
//新建的行对象
HSSFRow hssfRow = templateSheet.createRow(rowId);
//创建新的rowId行 columnId列 单元格对象
//新建的单元格对象
HSSFCell cell = hssfRow.createCell((short) columnId);
//假设相应的模板单元格 样式为非锁定
if (templateCell.getCellStyle().getLocked() == false) {
//设置此列style为非锁定
style.setLocked(false);
//设置到新的单元格上
cell.setCellStyle(style);
}
//否则样式为锁定
else {
//设置此列style为锁定
style.setLocked(true);
//设置到新单元格上
cell.setCellStyle(style);
}
//设置编码
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
//Debug.println("dataValue : " + dataValue);
//设置值 统一为String
cell.setCellValue(dataValue);
}
}
//设置输入流
FileOutputStream fOut = new FileOutputStream(outputFile);
//将模板的内容写到输出文件上
templatewb.write(fOut);
fOut.flush(); //操作结束,关闭文件
fOut.close(); } /**
* 生成数据为XLS格式
* @param filePath 生成Excel文件Path
* @param dataList 要导入的数据
*/
@SuppressWarnings("rawtypes")
public static void writeExcelBo(String filePath, List dataList) {
WritableWorkbook wwb = null;
try {
wwb = Workbook.createWorkbook(new File(filePath));
WritableSheet ws = wwb.createSheet("上市新书", 10);
ws.addCell(new jxl.write.Label(0, 1, "书名"));
ws.addCell(new jxl.write.Label(1, 1, "作者"));
ws.addCell(new jxl.write.Label(2, 1, "定价"));
ws.addCell(new jxl.write.Label(3, 1, "出版社"));
int bookSize = dataList.size();
BookVO book = new BookVO();
for (int i = 0; i < bookSize; i++) {
book = (BookVO) dataList.get(i);
ws.addCell(new jxl.write.Label(0, i + 2, "" + book.getBookName()));
ws.addCell(new jxl.write.Label(1, i + 2, book.getBookAuthor()));
ws.addCell(new jxl.write.Label(2, i + 2, "" + book.getBookPrice()));
ws.addCell(new jxl.write.Label(3, i + 2, book.getBookConcern())); }
// jxl.write.WritableFont wfc=
//new jxl.write.WritableFont(WritableFont.ARIAL,255,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.BLACK);
//jxl.write.WritableCellFormat wcfFC= new jxl.write.WritableCellFormat(wfc);
ws.addCell(new jxl.write.Label(0, 0, "2007年07月即将上市新书。"));
wwb.write();
// 关闭Excel工作薄对象
wwb.close();
} catch (IOException e) {
} catch (RowsExceededException e) { } catch (WriteException e) {
}
} /**往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);
} /**
* 往Excel中插入图片
* @param file
* @throws IOException
* @throws WriteException
*/
public static boolean insertImg(String filePath,String imgPath) throws IOException, WriteException {
try {
//创建一个工作薄
WritableWorkbook workbook = Workbook.createWorkbook(new File(filePath));
//待插入的工作表
WritableSheet imgSheet = workbook.createSheet("Images", 0);
//要插入的图片文件
File imgFile = new File(imgPath);
//图片插入到第二行第一个单元格,长宽各占六个单元格
insertImg(imgSheet, 0, 1, 6, 6, imgFile);
workbook.write();
workbook.close();
return true;
} catch (IOException e) {
throw e;
} catch (WriteException e) {
throw e;
} } @SuppressWarnings({ "rawtypes", "unchecked" })
public static void main(String[] args) throws WriteException, IOException {
writeExcel("c:\\Test測试Excel.xls");
System.out.println("OK");
ArrayList list = new ArrayList(); for (int i = 0; i < 10; i++) {
BookVO book = new BookVO();
book.setBookName("WebWork in action+" + i);
book.setBookAuthor("李四+" + i);
book.setBookPrice("39元+" + i);
book.setBookConcern("飞思科技+" + i);
list.add(book);
} writeExcelBo("c:\\上市新书.xls", list);
System.err.println("Book OK!!!"); //System.out.println(insertImg("c:\\上市新书.xls","C:\\2.png"));
} }

3、解析excel文件:

package excel;

import java.io.File;
import java.io.IOException; import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException; /**
* 解析excel文件
* @author lizhiyong
* @version $Id: ReadExcel.java, v 0.1
2014年8月5日 上午11:43:44 Exp $
*/
public class ReadExcel {
/**读取Excel文件的内容
* @param file 待读取的文件
* @return
*/
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();
} /**搜索某一个文件里是否包括某个keyword
* @param file 待搜索的文件
* @param keyWord 要搜索的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;
} public static void main(String[] a) {
String filePath = "c:\\上市新书.xls";
File file = new File(filePath);
System.out.println(readExcel(file)); System.out.println(searchKeyWord(file,"出版社32"));
}
}


版权声明:本文博客原创文章,博客,未经同意,不得转载。

创建和分析excel文件的更多相关文章

  1. C# -- 使用Aspose.Cells创建和读取Excel文件

    使用Aspose.Cells创建和读取Excel文件 1. 创建Excel Aspose.Cells.License li = new Aspose.Cells.License(); li.SetLi ...

  2. 使用Apache下poi创建和读取excel文件

    一:使用apache下poi创建excel文档 @Test /* * 使用Apache poi创建excel文件 */ public void testCreateExcel() { // 1:创建一 ...

  3. JS前端创建CSV或Excel文件并浏览器导出下载

    长期以来,在做文件下载功能的时候都是前端通过ajax把需要生成的文件的内容参数传递给后端,后端通过Java语言将文件生成在服务器,然后返回一个文件下载的连接地址url.前端通过location.hre ...

  4. 读取并创建excel文件(.xls)

    第三方库,附件 缺点:该库只支持.xls文件的操作 1.读取excel文件 例子: try { /** * 后续考虑问题,比如Excel里面的图片以及其他数据类型的读取 **/ InputStream ...

  5. C#创建Excel文件并将数据导出到Excel文件

    工具原料: Windows 7,Visual Studio 2010, Microsoft Office 2007 创建解决方案 菜单>新建>项目>Windows窗体应用程序: 添加 ...

  6. NPOI-Excel系列-1000.创建一个标准的Excel文件

    using NPOI.HSSF.UserModel; using Microsoft.VisualStudio.TestTools.UnitTesting; using System.IO; name ...

  7. Python 操作 MS Excel 文件

    利用 Python 对 Excel 文件进行操作需要使用第三方库: openpyxl,可执行 pip install openpyxl 进行安装 1. 导入 openpyxl 模块 导入 openpy ...

  8. Java生成和操作Excel文件(转载)

    Java生成和操作Excel文件   JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该A ...

  9. 用Python读写Excel文件(转)

    原文:google.com/ncr 虽然天天跟数据打交道,也频繁地使用Excel进行一些简单的数据处理和展示,但长期以来总是小心地避免用Python直接读写Excel文件.通常我都是把数据保存为以TA ...

随机推荐

  1. 使用require.js和backbone实现简单单页应用实践

    前言 最近的任务是重做公司的触屏版,于是再园子里各种逛,想找个合适的框架做成Web App.看到了叶大(http://www.cnblogs.com/yexiaochai/)对backbone的描述和 ...

  2. CareerCup chapter 1 Arrays and Strings

    1.Implement an algorithm to determine if a string has all unique characters What if you can not use ...

  3. [LeetCode136]Single Number寻找一个数组里只出现一次的数

    题目: Given an array of integers, every element appears twice except for one. Find that single one. No ...

  4. 各种ESB产品比较(转)

    介绍了主流商业和开源ESB的发展趋势.可借鉴的地方和其缺点:         主要介绍:       Oracle Service Bus       WebSphere Message Broker ...

  5. POJ 1915 Knight Moves(BFS+STL)

     Knight Moves Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 20913   Accepted: 9702 ...

  6. IIS URL Rewrite Module防盗链规则配置方法

    IIS版本:IIS 7.5 URL Rewrite组件:IIS URL Rewrite Module(http://www.iis.net/downloads/microsoft/url-rewrit ...

  7. 发现SQL Server惊天大秘密!!

    原文:发现SQL Server惊天大秘密!! --set statistics xml onCREATE TABLE T_TEST(ID INT IDENTITY PRIMARY KEY,Create ...

  8. iOS 在下面 AOP 程序

    iOS 在下面 AOP 程序 概念 在软件业.AOP对于Aspect Oriented Programming缩写,手段:面向方面的编程.它是一种函数式编程张燕生风扇类型.通过这样一个技术方案功能的预 ...

  9. ubuntu nginx安装及相关linux性能參数优化

    一.安装 下载源代码,解压:tar -xzvf nginx-1.4.7.tar.gz ./configure make && make install 改动默认nginx的监听port ...

  10. IIS7和IIS7.5备份和还原的方法

    windows2008的iis配置备份和iis6不同,在iis7中没有了6原来的保存配置xml的选项,而采用的是dos命令来进行iis7的备份.以下是win2008上iis7备份的方法. 首先打开CM ...