JXL.jar简单封装Excel读写操作
1.分析
2.行对象的设计
package com.zhaochao.utils; import java.util.List;
/**
*
* excel的行对象
*
* @author 赵超
*
*/
public class ExcelRow {
private List<String> colData; //当前行的全部列数据
public Integer getCols() {
return colData.size();
}
public List<String> getColData() {
return colData;
}
public void setColData(List<String> colData2) {
this.colData = colData2;
} }
2.页对象的设计
package com.zhaochao.utils; import java.util.List;
/**
*
* Excel页对象
*
* @author 赵超
*
*/
public class ExcelPage {
private List<ExcelRow> rowData; //当页excel的全部行数据
public Integer getRows() {
return rowData.size();
}
public List<ExcelRow> getRowData() {
return rowData;
}
public void setRowData(List<ExcelRow> rowData) {
this.rowData = rowData;
} }
3.excel对象的设计
package com.zhaochao.utils; import java.util.List;
/**
*
* Excel模型类
*
*
* @author 赵超
*
*/
public class ExcelModel {
private List<ExcelPage> pageData; //Excel每页的数据
public Integer getPages() {
return pageData.size();
}
public List<ExcelPage> getPageData() {
return pageData;
}
public void setPageData(List<ExcelPage> pageData) {
this.pageData = pageData;
}
}
4.excel读写工具类的设计
package com.zhaochao.utils; import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List; import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
/**
*
* @author 操作excel工具类
*
*/
public class ExcelUtil { public static void main(String [] args){ //testWriteExcel();
testReadExcel();
} public static void testReadExcel(){
//String urlStr="http://baaifile.b0.upaiyun.com/uploadfile/2014/10/25/201410251038347176.xls";
//String urlStr="C:\\Users\\Administrator\\Desktop\\privateCoupon.xls";
String urlStr="c://user.xls";
ExcelModel model= ExcelUtil.ReadExcel(urlStr);
int pageSize=0;
for(ExcelPage page: model.getPageData()){
for(ExcelRow row:page.getRowData()){
for(String col:row.getColData()){
System.out.print(col+" ");
}
System.out.println();
}
System.out.println("======总共"+model.getPages()+"页=====第"+(++pageSize)+"页====================");
}
}
public static void testWriteExcel(){
String fileName="c://user.xls";
//设置两列数据
List<String> cols=new ArrayList<String>();
cols.add("admin");
cols.add("123");
//设置行数据
ExcelRow row=new ExcelRow();
row.setColData(cols);
List<ExcelRow> rows=new ArrayList<ExcelRow>();
rows.add(row);
rows.add(row);
//设置页数据
ExcelPage page=new ExcelPage();
page.setRowData(rows);
List<ExcelPage> pages=new ArrayList<ExcelPage>();
pages.add(page);
pages.add(page);
//设置excleModel
ExcelModel model=new ExcelModel();
model.setPageData(pages);
writeExcel(fileName,model);
} /**
* 在线解析Excel
*
* @param urlStr 能够是http://开头的url,也能够是文件路径
*
* @return 返回ExcelMode
*/
private static ExcelModel ReadExcel(String urlStr) {
ExcelModel excle= new ExcelModel();
try {
InputStream is=null;
if(urlStr.startsWith("http://")){
URL url=new URL(urlStr);
HttpURLConnection httpUrl=(HttpURLConnection) url.openConnection();
httpUrl.connect();
is = httpUrl.getInputStream();
}else{
File f=new File(urlStr);
if(f.exists()){
is= new FileInputStream(f) ;
}else{
throw new Exception("文件不存");
}
}
Workbook wb = Workbook.getWorkbook(is);
jxl.Sheet [] sheet =wb.getSheets();
List<ExcelPage> pageDate=new ArrayList<ExcelPage>();
for(int s=0;s<sheet.length;s++){
ExcelPage page=new ExcelPage();
List<ExcelRow> rows=new ArrayList<ExcelRow>();
for(int i=0;i<sheet[s].getRows();i++){
ExcelRow row=new ExcelRow();
List<String> colData=new ArrayList<String>();
for(int j=0;j<sheet[s].getColumns();j++){
colData.add(sheet[s].getCell(j, i).getContents());
}
row.setColData(colData);
rows.add(row);
}
page.setRowData(rows);
pageDate.add(page);
}
excle.setPageData(pageDate);
wb.close();
is.close();
} catch (Exception e) {
e.printStackTrace();
}
return excle;
}
/**
*
* @param fileName 要写入文件的路径
* @param excel 要写入文件的数据
*/ private static void writeExcel(String fileName,ExcelModel excel) {
try {
WritableWorkbook book = Workbook.createWorkbook(new File(fileName));
for(int page=0;page<excel.getPages();page++){
WritableSheet sheet = book.createSheet("第"+page+"页", 0);
// 在label对象的构造方法中指名单元格位置是第一列。第一行(0,0)
// 以及单元格内容为test
for(int row=0;row<excel.getPageData().get(page).getRows();row++){
for(int col=0;col<excel.getPageData().get(page).getRowData().get(row).getCols();col++){
Label label = new Label(col,row ,excel.getPageData().get(page).getRowData().get(row).getColData().get(col));
// 将定义好的单元格加入到工作表中
sheet.addCell(label);
}
} }
// 写入数据并关闭文件
book.write();
book.close();
System.out.println("生成excel文件成功");
} catch (Exception e) {
e.printStackTrace();
}
} }
5.写測试
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2h6aGFvY2hhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
6.读測试
JXL.jar简单封装Excel读写操作的更多相关文章
- Java学习---Excel读写操作
1.1.1. 简介 Apache POI 使用Apache POI 完成Excel读写操作 Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API ...
- NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))
NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...
- NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))
在看这个博客前,请读者先去完整看完:NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article ...
- Java使用jxl.jar包写Excel文件的最适合列宽问题基本实现
以前用jxl.jar包,读写过Excel文件.也没有注意最适合列宽的问题,但是jxl.jar没有提供最适合列宽的功能,上次用到写了一下,可以基本实现最适合列宽. 注意,这个只是基本可以实现,基本针对中 ...
- 轻松完成excel读写操作- 基于POI的框架BingExcel的使用(1)
Bingexcel User Guide 使用maven进行项目开发目前项目的maven仓库是在github上,浏览地址为 https://github.com/bingyulei007/mvn-re ...
- 【Python】excel读写操作 xlrd & xlwt
xlrd ■ xlrd xlrd模块用于读取excel文件内容 基本用法: workbook = xlrd.open_workbook('文件路径') workbook.sheet_names() # ...
- 轻松完成excel读写操作- 基于POI的框架BingExcel的使用(2)
在进行 类转换时候,系统默认注册了一些转换器,当然你也可以自定局部或者全局的转换器.下面进行具体使用说明 java类说明 对应的java实体类,其属性必须要有__@CellConfig__注解,此注 ...
- Excel 读写操作
读 import xlrd from xlrd.book import Book from xlrd.sheet import Sheet from xlrd.sheet import Cell wo ...
- 78、excel的读写操作
本篇主要是用python来自动生成excel数据文件也就是简单的excel读写操作.python读写excel文件主要是第三方模块库xlrd.xlwt. 本篇导航: 写excel 读excel 一.写 ...
随机推荐
- Python学习七步走
在周五的下午三点钟(为什么是这个时间?因为事情总会在周五下午三点钟发生),你收到一条通知,客户发现你的软件出现一个错误.在有了初步的怀疑后,你联系运维,查看你的软件日志以了解发生了什么,因为你记得收到 ...
- Linux中常用命令(文件与目录)
1.pwd 查看当前目录(Print Working Directory) 2.cd 切换工作目录(Change Directory) (1)格式:cd [目录位置] 特殊目录: .当前目录 ..上一 ...
- PKU 2528 Mayor's posters
题意: 一个公告板上面贴海报,宽度都是一样的,长度可能不一样.后面的海报可能把前面的覆盖掉.问最后能看见多少张不同的海报. 思路: 这题原来做过,是用线段树的区间染色写的.记录每个区间是纯色还是杂色. ...
- C#读写共享目录
C#读写共享目录 该试验分下面步骤: 1.在server设置一个共享目录.在这里我的serverip地址是10.80.88.180,共享目录名字是test,test里面有两个文件:good.txt和b ...
- Android中集成ffmpeg(一):编译ffmpeg
方案选择 Android中集成ffmpeg的codec功能无非两种方式: JNI直接调用,主要用于App开发(无权限修改系统底层),如EXOPlayer,JPlayer等. 集成ffmpeg到OMX, ...
- HDU 4462 Scaring the Birds (暴力枚举DFS)
题目链接:pid=4462">传送门 题意:一个n*n的区域,有m个位置是能够放稻草人的.其余都是玉米.对于每一个位置(x,y)所放稻草人都有个作用范围ri, 即abs(x-i)+ab ...
- caioj1442:第k小的数Ⅱ
[传送门:caioj1442] 简要题意: 给出n个点,每个点都有一个权值,m个操作,操作有两种:第一种是询问l到r的第k小的值,然后输出这个值,第二种是将第x个点的值改为k 题解: 又是一道主席树的 ...
- Android Support Library 23.2用法简析
写在前面的几句话 前几天谷歌发布了android-support-library-23.2支持库,这一次23.2版本增加了一些新的支持库以及新的功能.接下来这篇文章,就是对这些新功能部分做简单的用法介 ...
- 24.桌面移动qq
#include <stdlib.h> #include <Windows.h> #include <stdio.h> #include <math.h> ...
- linux下,yum 安装mysql
顺手记录一下安装mysqlclient 先安装mysql-devel yum install mysql-devel 再安装mysqlclient pip3 install mysqlclient 开 ...