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 ...
随机推荐
- Android动画学习(二)——Tween Animation
前两天写过一篇Android动画学习的概述,大致的划分了下Android Animation的主要分类,没有看过的同学请移步:Android动画学习(一)——Android动画系统框架简介.今天接着来 ...
- ZOJ Problem Set - 1115 Digital Roots
水题记录: 注:此题题目并没有限定数值的大小,所以要用字符串进行处理 #include <stdio.h> #include <string.h> int main() { ] ...
- C# decimal保留指定的小数位数,不四舍五入
decimal保留指定位数小数的时候,.NET自带的方法都是四舍五入的. 项目中遇到分摊金额的情况,最后一条的金额=总金额-已经分摊金额的和. 这样可能导致最后一条分摊的时候是负数,所以自己写了一个保 ...
- 可控制导航下拉方向的jQuery下拉菜单代码
效果:http://hovertree.com/texiao/nav/1/ 代码如下: <!DOCTYPE html> <html> <head> <meta ...
- css3实现光标悬浮滚动菜单
效果:http://hovertree.com/texiao/css3/21/ 本文所用到的CSS知识请点击效果展示也中第一和第二个链接. 代码: <!DOCTYPE html> < ...
- PHP intval()
定义和用法 获取变量的整数值,允许以使用特定的进制返回.默认10进制 注:如果参数为整数,则不做任何处理. 语法 intval (var, base) 参数 描述 var 必须.可以是任何标量类型. ...
- js promise chain
新的标准里增加了原生的Promise. 这里只讨论链式使用的情况,思考一下其中的细节部分. 一,关于 then() 和 catch() 的复习 then() 和 catch() 的参数里可以放置 ca ...
- c++ const 成员函数
第一个事实: 某类中可以这么声明定义两个函数,可以重载(overload) void pa(){ cout<<"a"<<endl; } void pa() ...
- CRM(四川网脉系统)项目总结
CRM系统(四川网脉系统)项目总结 为期八天的四川网脉系统(CRM系统)项目结束了,不管是在做这个项目的过程中还是答辩的过程中都有一些收获,下面对整个项目的开发做一个大致的总结. 一.项目概况 四川网 ...
- POJ 2115 C Looooops扩展欧几里得
题意不难理解,看了后就能得出下列式子: (A+C*x-B)mod(2^k)=0 即(C*x)mod(2^k)=(B-A)mod(2^k) 利用模线性方程(线性同余方程)即可求解 模板直达车 #incl ...