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());
时间: 2024-10-10 07:08:46

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

jxl导入/导出excel

转自:http://www.cnblogs.com/linjiqin/p/3540266.html 1.jxl导入/导出excel案例,黏贴即可运行 package junit.test; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import jxl.Cell; import jxl.Sheet; import jxl.Workbook;

Excel jxl导入导出

JAVA EXCEL API简介 Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表.因为是使用Java编写的,所以我们在Web应用中可以通过JSP.Servlet来调用API实现对Excel数据表的访问. 现在发布的稳定版本是V2.0,提供以下功能: 从Excel 95.97.2000等格式的文件中读取数据: 读取Exc

数据库导入导出实例

导入导出实例: 以下所有命令均在DOS窗口中输入! 用户的创建参考:http://blog.csdn.net/gateway6143/article/details/41212823 一.数据导出: 1. 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中 exp system/[email protected] file=d:\daochu.dmp full=y 2. 将数据库中system用户与sys用户的表导出 (含表.存储过程.视图等)

JXL导入/导出

近两年技术没有过细化总结,突然心血来潮,随手来总结一些问题,废话不多说,切入正题. jxl导入导出这里主要用的EXTJS+Sh  前端:创建按键,调用触发事件,根据触发事件中url找到控制层相对应的路径 按键 2.js /* * 导入 */ importItem : function() { Ext.QuickTips.init(); Ext.onReady(function() { var form = new Ext.form.FormPanel({ baseCls : 'x-plain',

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

1.介绍 java实现文件的导入导出数据库,目前在大部分系统中是比较常见的功能了,今天写个小demo来理解其原理,没接触过的同学也可以看看参考下. 目前我所接触过的导入导出技术主要有POI和iReport,poi主要作为一些数据批量导入数据库,iReport做报表导出.另外还有jxl类似poi的方式,不过貌似很久没跟新了,2007之后的office好像也不支持,这里就不说了. 2.POI使用详解 2.1 什么是Apache POI? Apache POI是Apache软件基金会的开放源码函式库,

jxl导入导出Excel

Excel的导入导出在项目中经常用到,比较常用的解析架包是jxl和poi.这里首先介绍jxl是如何实现的. 通过参考网上的写法跟我个人的理解: 导入Excel:通过本地文件得到一个输入流,然后根据Excel的结构来解析数据. 导出Excel:声明一个输出流对象,根据参数来得到一个workbook,用来写入数据的.然后根据Excel表的结构来想workbook添加元素即可.sheet.cell.... 导出Excel,导出含有图片的数据:jxl只支持png格式的图片. 导出对象到Excel表:其实

jxl导入导出总结

jar包 jxl.jar commons-fileupload-1.2.2.jar commons-io-1.4.jar jar包和实例下载地址:http://download.csdn.net/detail/w5167839/7902223 思路: 上传 1.上传的文件通过http协议指定格式传输到后台 method="post" action="upload.action" enctype="multipart/form-data" 2.后台

NPOI导入导出实例代码

WinForm导出 private string fileName = null; //文件名 private IWorkbook workbook = null; private FileStream fs = null; private bool disposed; public int DataTableToExcel(DataTable data, string sheetName, bool isColumnWritten) { int i = 0; int j = 0; int co

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

导入代码,从csv文件得到datatable         /// <summary>        /// Get Data From Csv File         /// (Through StreamReader)        /// </summary>        /// <returns></returns>        private bool GetData(Stream inputStream, out string errMe