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. ios01

    http://code4app.com/ 0.全部Swift http://numbbbbb.gitbooks.io/-the-swift-programming-language-/content/ ...

  2. Axuer 网页

    http://www.webppd.com/axure/

  3. Java面试题集(136-150)

    摘要:目,尽管仅仅有15道题目.可是包括的信息量还是非常大的,非常多题目背后的解题思路和算法是非常值得玩味的. 136.给出以下的二叉树先序.中序.后序遍历的序列? 答:先序序列:ABDEGHCF.中 ...

  4. C++笔试面试总结

    手游广州某公司书面今天接受采访时.刚进去中午1中场休息.他们公司谁刚刚醒来,一个冷漠打牌,然后去上班.瞬间,这些公司有没有什么好印象,压抑. 接着快2点的时候.发了一份笔试题.大部分题目均在网上的&l ...

  5. 【DataStructure】The description of Java Collections Framework

    The Java Connections FrameWork is a group of class or method and interfacs in the java.util package. ...

  6. 浅谈http请求数据分析

    前段时间,我一个朋友给我打了个电话.说是现在在搞网络销售,问我能不能帮他整个自动发帖机.说实在的,以前没有弄过这块,我就跟他讲我试试看吧,能不能成不能保证.毕竟是搞程序的嘛,自学的能力还是有滴.经过一 ...

  7. isset,empty,is_null小知识

    <?php /** 在这项研究开始时,有那么多的人不能很好的运用isset,empty,is_null正确null,false等待值回报值做出正确的推理,在这里,我自己总结通过学习小知识,随后的 ...

  8. 【剑指offer】删除字符也出现在一个字符串

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/27110873 剑指offer上的字符串相关题目. 题目:输入两个字符串,从第一字符串中删除 ...

  9. android:强大的图像下载和缓存库Picasso

    1.Picasso一个简短的引论 Picasso它是Square该公司生产的一个强大的图像下载并缓存画廊.官方网站:http://square.github.io/picasso/ 仅仅须要一句代码就 ...

  10. RH133读书 笔记(4) - Lab 4 System Services

    Lab 4 System Services Goal: Develop skills using system administration tools and setting up and admi ...