jxl导入导出实例
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导入导出实例的更多相关文章
- jxl导入/导出excel
1.jxl导入/导出excel案例,黏贴即可运行 package junit.test; import java.io.File; import java.io.IOException; import ...
- jxl导入/导出excel(网上的案例)
jxl导入/导出excel 1.jxl导入/导出excel案例,黏贴即可运行 package junit.test; import java.io.File; import java.io.IOExc ...
- oracle数据库的导入 导出实例
oracle数据库的导入 导出实例 分类: DataBase2011-09-07 23:25 377人阅读 评论(0) 收藏 举报 数据库oraclefileusercmdservice 我要从另外一 ...
- 1、jxl导入/导出excel案例,黏贴即可运行
package junit.test; import java.io.File; import java.io.IOException; import java.util.ArrayList; imp ...
- java实现文件批量导入导出实例(兼容xls,xlsx)
1.介绍 java实现文件的导入导出数据库,目前在大部分系统中是比较常见的功能了,今天写个小demo来理解其原理,没接触过的同学也可以看看参考下. 目前我所接触过的导入导出技术主要有POI和iRepo ...
- 用poi框架进行批量导入导出实例
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能.我们这里使用poi对数据库中的数据进行批量导出,以及 ...
- java struts jxl 导入导出Excel(无模板)
jar包: import javax.servlet.http.HttpServletResponse; import java.io.OutputStream; import java.io.Fil ...
- Excel jxl导入导出
JAVA EXCEL API简介 Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Wind ...
- .NET中的CSV导入导出(实例)
导入代码,从csv文件得到datatable /// <summary> /// Get Data From Csv File /// (Th ...
随机推荐
- cookie属性详解
在chrome控制台中的resources选项卡中可以看到cookie的信息. 一个域名下面可能存在着很多个cookie对象. name字段为一个cookie的名称. value字段为一个cookie ...
- 玩转Jquery,告别前端知道思路忘记知识点的痛苦
本节内容: 本章主要讲解一下jquery,主要是工作中用的前端框架是datetables框架,然后datetables框架又是基于jqeury研发的,所以要想学一个东西,就必须要了解其底层,不然走路都 ...
- java 中多线程的同步函数的运用
/* * 需求: * 银行有一个金库 * 有两个储户,分别存300元.每次存100 , 存三次 * * 这个是有线程问题的, * * 我们应该通过下边的三个方法来查找问题 * 1.明确哪些代码是多线程 ...
- PowerPoint基础
一.基础 默认后缀ppt,pptx office2003和以后的版本只支持ppt, 可以将pptx另存为ppt97-2003 二.修改PPT尺寸 三.新建幻灯片 四.字体与段落设置 五.主题与字体 六 ...
- js晋级篇——前端内存泄漏探讨
1.IE7/8 DOM对象或者ActiveX对象循环引用导致内存泄漏 循环引用分为两种: 第一种:多个对象循环引用 var a=new Object; var b=new Object; a.r=b; ...
- “全能”选手—Django 1.10文档中文版Part3
Django 1.10官方文档的入门教程已经翻译完毕,后续的部分将不会按照顺序进行翻译,而是挑重点的先翻译. 有兴趣的可以关注我的博客. 第一部分传送门 第二部分传送门 第四部分传送门 3.2 模型和 ...
- 细说ASP.NET Core静态文件的缓存方式
一.前言 我们在优化Web服务的时候,对于静态的资源文件,通常都是通过客户端缓存.服务器缓存.CDN缓存,这三种方式来缓解客户端对于Web服务器的连接请求压力的. 本文指在这三个方面,在ASP.NET ...
- Nancy之文件上传与下载
零.前言 由于前段时间一直在找工作,找到工作后又比较忙,又加班又通宵的赶项目,所以博客有段时间没有更新了. 今天稍微空闲一点,碰巧前几天看到有园友问我Nancy中下载文件的问题,然后就趁着休息的时间写 ...
- NPOI读取Excel帮助类,支持xls与xlsx,实现公式解析,空行的处理
NPOI读取Excel(2003或者2010)返回DataTable.支持公式解析,空行处理. /// <summary>读取excel /// 默认第一行为表头 /// </sum ...
- csharp: MySQL Stored Procedure using DAL
# 建表 塗聚文 20160907 drop table attendrecord; create table attendrecord ( seq INT NOT NULL PRIMARY KEY ...