创建和分析excel文件
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文件的更多相关文章
- C# -- 使用Aspose.Cells创建和读取Excel文件
使用Aspose.Cells创建和读取Excel文件 1. 创建Excel Aspose.Cells.License li = new Aspose.Cells.License(); li.SetLi ...
- 使用Apache下poi创建和读取excel文件
一:使用apache下poi创建excel文档 @Test /* * 使用Apache poi创建excel文件 */ public void testCreateExcel() { // 1:创建一 ...
- JS前端创建CSV或Excel文件并浏览器导出下载
长期以来,在做文件下载功能的时候都是前端通过ajax把需要生成的文件的内容参数传递给后端,后端通过Java语言将文件生成在服务器,然后返回一个文件下载的连接地址url.前端通过location.hre ...
- 读取并创建excel文件(.xls)
第三方库,附件 缺点:该库只支持.xls文件的操作 1.读取excel文件 例子: try { /** * 后续考虑问题,比如Excel里面的图片以及其他数据类型的读取 **/ InputStream ...
- C#创建Excel文件并将数据导出到Excel文件
工具原料: Windows 7,Visual Studio 2010, Microsoft Office 2007 创建解决方案 菜单>新建>项目>Windows窗体应用程序: 添加 ...
- NPOI-Excel系列-1000.创建一个标准的Excel文件
using NPOI.HSSF.UserModel; using Microsoft.VisualStudio.TestTools.UnitTesting; using System.IO; name ...
- Python 操作 MS Excel 文件
利用 Python 对 Excel 文件进行操作需要使用第三方库: openpyxl,可执行 pip install openpyxl 进行安装 1. 导入 openpyxl 模块 导入 openpy ...
- Java生成和操作Excel文件(转载)
Java生成和操作Excel文件 JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该A ...
- 用Python读写Excel文件(转)
原文:google.com/ncr 虽然天天跟数据打交道,也频繁地使用Excel进行一些简单的数据处理和展示,但长期以来总是小心地避免用Python直接读写Excel文件.通常我都是把数据保存为以TA ...
随机推荐
- DP:树DP
The more, The Better Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- Linux下一个php+mysql+nginx构建编译(三)
在此之前一直是一个关键构建webserver.但一个关键的建筑环境都比较旧的.假定使用一个相对较新的环境,尤其是正式的server.您必须手动编译自己建(基于以下的结构linux centos6.5 ...
- [Windows Phone 8]如何解决Lumia手机无法进入系统或开启?
原文:[Windows Phone 8]如何解决Lumia手机无法进入系统或开启? 摘要 相信有的人一定有遇过手机在更新的时候,齿轮转不停,过了好几小时还是一样,这就代表系统出现问题了,如今Nokia ...
- Dubbo-Admin管理平台和Zookeeper注册中心的搭建(转)
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubb ...
- group by和order by的错误
select u.Col_Name from hs_user u left join ( select tuid,count(*) as 'col_sumtopic' from BBS_Topic ...
- repeater操作
protected void rpRole_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ...
- 点击搜索取消UISearchDisplayController的搜索状态
一般,我们用到UISearchDisplayController的时候,都是须要对一个数据源进行刷选,在UISearchDisplayController自带的tableView中展示出来,然后点击退 ...
- SorlNet
Solr学习 上一篇已经讲到了Solr 查询的相关的参数.这里在讲讲C#是如何通过客户端请求和接受solr服务器的数据, 这里推荐使用SolrNet,主要是:SolrNet使用非常方便,而且用户众多, ...
- T-SQL中default值的使用
今天介绍一下通过T-SQL语句来创建表时使用default的关键字来自动使用默认值,这个关键字和其它的如:identity,primary key ,not null ,unique等不是相同,这里简 ...
- MongoDB学习笔记-维护
主从复制 MongoDB有主从复制技术,解决高可用和容灾问题,也就是备份. 配置主从的特点: N 个节点的集群 任何节点可作为主节点 所有写入操作都在主节点上 自动故障转移 自动恢复 数据分布式存储 ...