1 package com.tgb.test;
2
3 import java.io.File;
4 import java.io.IOException;
5 import java.util.ArrayList;
6 import java.util.List;
7
8 import jxl.Cell;
9 import jxl.Sheet;
10 import jxl.Workbook;
11 import jxl.write.Label;
12 import jxl.write.Number;
13 import jxl.write.WritableImage;
14 import jxl.write.WritableSheet;
15 import jxl.write.WritableWorkbook;
16 import jxl.write.WriteException;
17
18 import org.apache.commons.lang3.math.NumberUtils;
19 import org.junit.Test;
20 //import org.junit.Test;
21 public class JxlDemo {
22 /**
23 * 导入(导入到内存)
24 */
25 @Test
26 public void importExcel() {
27 Workbook book = null;
28 try {
29 book = Workbook.getWorkbook(new File("D:/test/test.xls"));
30 // 获得第一个工作表对象
31 Sheet sheet = book.getSheet(0);
32 int rows=sheet.getRows();
33 int columns=sheet.getColumns();
34 // 遍历每行每列的单元格
35 for(int i=0;i<rows;i++){
36 for(int j=0;j<columns;j++){
37 Cell cell = sheet.getCell(j, i);
38 String result = cell.getContents();
39 if(j==0){
40 System.out.print("姓名:"+result+" ");
41 }
42 if(j==1){
43 System.out.print("年龄:"+result+" ");
44 }
45 if((j+1)%2==0){
46 System.out.println();
47 }
48 }
49 }
50 System.out.println("========");
51 // 得到第一列第一行的单元格
52 Cell cell1 = sheet.getCell(0, 0);
53 String result = cell1.getContents();
54 System.out.println(result);
55 System.out.println("========");
56 } catch (Exception e) {
57 System.out.println(e);
58 }finally{
59 if(book!=null){
60 book.close();
61 }
62 }
63 }
64
65 /**
66 * 导出(导出到磁盘)
67 */
68 @Test
69 public void exportExcel() {
70 WritableWorkbook book = null;
71 try {
72 // 打开文件
73 book = Workbook.createWorkbook(new File("D:/test/test.xls"));
74 // 生成名为"学生"的工作表,参数0表示这是第一页
75 WritableSheet sheet = book.createSheet("学生", 0);
76 // 指定单元格位置是第一列第一行(0, 0)以及单元格内容为张三
77 Label label = new Label(0, 0, "张三");
78 // 将定义好的单元格添加到工作表中
79 sheet.addCell(label);
80 // 保存数字的单元格必须使用Number的完整包路径
81 jxl.write.Number number = new jxl.write.Number(1, 0, 30);
82 sheet.addCell(number);
83 // 写入数据并关闭文件
84 book.write();
85 } catch (Exception e) {
86 System.out.println(e);
87 }finally{
88 if(book!=null){
89 try {
90 book.close();
91 } catch (Exception e) {
92 e.printStackTrace();
93 }
94 }
95 }
96 }
97
98 /**
99 * 对象数据写入到Excel
100 */
101 @Test
102 public void writeExcel() {
103 WritableWorkbook book = null;
104 try {
105 // 打开文件
106 book = Workbook.createWorkbook(new File("D:/test/stu.xls"));
107 // 生成名为"学生"的工作表,参数0表示这是第一页
108 WritableSheet sheet = book.createSheet("学生", 0);
109
110 List<Student> stuList=queryStudentList();
111 if(stuList!=null && !stuList.isEmpty()){
112 for(int i=0; i<stuList.size(); i++){
113 sheet.addCell(new Label(0, i, stuList.get(i).getName()));
114 sheet.addCell(new Number(1, i, stuList.get(i).getAge()));
115 }
116 }
117
118 // 写入数据并关闭文件
119 book.write();
120 } catch (Exception e) {
121 System.out.println(e);
122 }finally{
123 if(book!=null){
124 try {
125 book.close();
126 } catch (Exception e) {
127 e.printStackTrace();
128 }
129 }
130 }
131
132 }
133
134 /**
135 * 读取Excel数据到内存
136 */
137 @Test
138 public void readExcel() {
139 Workbook book = null;
140 try {
141 // 打开文件
142 book = Workbook.getWorkbook(new File("D:/test/stu.xls"));
143 // 获得第一个工作表对象
144 Sheet sheet = book.getSheet(0);
145 int rows=sheet.getRows();
146 int columns=sheet.getColumns();
147 List<Student> stuList=new ArrayList<Student>();
148 // 遍历每行每列的单元格
149 for(int i=0;i<rows;i++){
150 Student stu = new Student();
151 for(int j=0;j<columns;j++){
152 Cell cell = sheet.getCell(j, i);
153 String result = cell.getContents();
154 if(j==0){
155 stu.setName(result);
156 }
157 if(j==1){
158 stu.setAge(NumberUtils.toInt(result));
159 }
160 if((j+1)%2==0){
161 stuList.add(stu);
162 stu=null;
163 }
164 }
165 }
166
167 //遍历数据
168 for(Student stu : stuList){
169 System.out.println(String.format("姓名:%s, 年龄:%s",
170 stu.getName(), stu.getAge()));
171 }
172
173 } catch (Exception e) {
174 System.out.println(e);
175 }finally{
176 if(book!=null){
177 try {
178 book.close();
179 } catch (Exception e) {
180 e.printStackTrace();
181 }
182 }
183 }
184
185 }
186
187 /**
188 * 图片写入Excel,只支持png图片
189 */
190 @Test
191 public void writeImg() {
192 WritableWorkbook wwb = null;
193 try {
194 wwb = Workbook.createWorkbook(new File("D:/test/image.xls"));
195 WritableSheet ws = wwb.createSheet("图片", 0);
196 File file = new File("D:\\test\\png.png");
197 //前两位是起始格,后两位是图片占多少个格,并非是位置
198 WritableImage image = new WritableImage(1, 4, 6, 18, file);
199 ws.addImage(image);
200 wwb.write();
201 } catch (Exception e) {
202 e.printStackTrace();
203 }finally{
204 if(wwb!=null){
205 try {
206 wwb.close();
207 } catch (Exception e) {
208 e.printStackTrace();
209 }
210 }
211 }
212 }
213
214 private List<Student> queryStudentList(){
215 List<Student> stuList=new ArrayList<Student>();
216 stuList.add(new Student("zhangsan", 20));
217 stuList.add(new Student("lisi", 25));
218 stuList.add(new Student("wangwu", 30));
219 return stuList;
220 }
221
222 public class Student {
223 private String name;
224 private int age;
225
226 public Student() {
227 }
228
229 public Student(String name, int age) {
230 super();
231 this.name = name;
232 this.age = age;
233 }
234
235 public String getName() {
236 return name;
237 }
238
239 public void setName(String name) {
240 this.name = name;
241 }
242
243 public int getAge() {
244 return age;
245 }
246
247 public void setAge(int age) {
248 this.age = age;
249 }
250 }
251 }

以上的代码简单明了的示范了JXL的导入导出功能,具体的导入导出工具类都是在此基础上建立起来的。在最近的项目中出现了一个小问题,就是导出Excel的文件名如果是中文就会出现乱码,所以需要做一些简单的处理,

response.setHeader("Content-disposition", "attachment; filename="+ new String( fileName.getBytes("gb2312"), "ISO8859-1" )+ ".xls");

  更加详细健壮的设置如下:

 
fileName = new String(fileName.getBytes(),"iso-8859-1");
response.setCharacterEncoding("gb2312");
response.reset();
response.setContentType("application/OCTET-STREAM;charset=gb2312");
response.setHeader("pragma", "no-cache");
response.addHeader("Content-Disposition", "attachment;filename=\""
+ fileName + ".xls\"");// 点击导出excle按钮时候页面显示的默认名称
workbook = Workbook.createWorkbook(response.getOutputStream());

jxl导入导出实例的更多相关文章

  1. jxl导入/导出excel

    1.jxl导入/导出excel案例,黏贴即可运行 package junit.test; import java.io.File; import java.io.IOException; import ...

  2. jxl导入/导出excel(网上的案例)

    jxl导入/导出excel 1.jxl导入/导出excel案例,黏贴即可运行 package junit.test; import java.io.File; import java.io.IOExc ...

  3. oracle数据库的导入 导出实例

    oracle数据库的导入 导出实例 分类: DataBase2011-09-07 23:25 377人阅读 评论(0) 收藏 举报 数据库oraclefileusercmdservice 我要从另外一 ...

  4. 1、jxl导入/导出excel案例,黏贴即可运行

    package junit.test; import java.io.File; import java.io.IOException; import java.util.ArrayList; imp ...

  5. java实现文件批量导入导出实例(兼容xls,xlsx)

    1.介绍 java实现文件的导入导出数据库,目前在大部分系统中是比较常见的功能了,今天写个小demo来理解其原理,没接触过的同学也可以看看参考下. 目前我所接触过的导入导出技术主要有POI和iRepo ...

  6. 用poi框架进行批量导入导出实例

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能.我们这里使用poi对数据库中的数据进行批量导出,以及 ...

  7. java struts jxl 导入导出Excel(无模板)

    jar包: import javax.servlet.http.HttpServletResponse; import java.io.OutputStream; import java.io.Fil ...

  8. Excel jxl导入导出

    JAVA EXCEL API简介 Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Wind ...

  9. .NET中的CSV导入导出(实例)

    导入代码,从csv文件得到datatable         /// <summary>        /// Get Data From Csv File         /// (Th ...

随机推荐

  1. js 根据屏幕大小调用不同的css文件

    原因:屏幕大小不一样,网站看起来总觉得怪怪的,所以,针对不同大小的屏幕,写了不同的css,写完了,要解决的问题就是:怎么根据屏幕的大小来引用不同的CSS,下面就是解决方法了. 解决方法:首先,在hea ...

  2. ASP.NET MVC Application_Error 无效不执行

    我们一般在开发 ASP.NET MVC 应用程序的时候,会在 Application_Error 中添加异常日志记录,一般会记录 500 的错误信息,但如果应用程序在出错的时候,Application ...

  3. hibernate笔记--单向一对多映射方法

    上一篇讲的是单向多对一的表关系,与单向一对多的关系正好相反,如下图所示关系: ,可以看出年级表和学生表是一对多的关系,一条年级信息对应多条学生信息,在hibernate中成为单向的一对多的映射关系,应 ...

  4. hibernate笔记--通过SchemaExport生成数据库表

    方法比较简单,项目中只需要两个java类(一个实体类,如User,一个工具类),两个配置文件(hibernate必须的两个配置文件hibernate.cfg.xml,与User.hbm.xml),即可 ...

  5. 【JUC】JDK1.8源码分析之ConcurrentHashMap(一)

    一.前言 最近几天忙着做点别的东西,今天终于有时间分析源码了,看源码感觉很爽,并且发现ConcurrentHashMap在JDK1.8版本与之前的版本在并发控制上存在很大的差别,很有必要进行认真的分析 ...

  6. gnuplot: 一种更为简洁的曲线,柱状图绘图软件

    gnuplot: 一种更为简洁的曲线,柱状图绘图软件 gnuplot: 一种更为简洁的曲线,柱状图绘图软件 Zhong Xiewei Wed Jun 25 gnuplot简单介绍 关于gnuplot的 ...

  7. 微信浏览器是移动端的IE6?微信升级内核后Html5和CSS3兼容性总结

    今年4月,自从微信浏览器X5 升级Blink内核之后,各前端社区一片高潮,仿佛看到了前端er,眼含热泪进而抱头痛头的说:终于可以不用兼容这"移动端的IE6 "了,可以早点回家了!! ...

  8. 公司的一个面试题:如何用css让一个容器水平垂直居中?

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. ISS部署网站--HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。

    1.控制面板>程序和功能>打开或关闭Windows功能 > Internet信息服务 > 万维网服务 > 应用程序开发功能 > ASP.NET(看这个是否选上): ...

  10. 背水一战 Windows 10 (15) - 动画: 缓动动画

    [源码下载] 背水一战 Windows 10 (15) - 动画: 缓动动画 作者:webabcd 介绍背水一战 Windows 10 之 动画 缓动动画 - easing 示例演示缓动(easing ...