使用JExcel导出excel文件
package org.aaa.portal.tools; import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Map; import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.VerticalAlignment;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject; public class ExcelUtils {
public static final String COLUMN_KEY="key"; //列的键,对应JSONObject的key
public static final String COLUMN_TEXT="text"; //列头名称
/**
* 把JSONArray存储为Excel
* @param fileName 完整文件路径名称
* @param sheetName sheet 名称
* @param ja JSONArray
* @param columns
* List<Map<String, String>> 按照list Item的顺序生成列
* Map格式:
Map<String,String> column1 =new HashMap<String,String>();
column1.put(ExcelUtils.COLUMN_KEY, "sUserName");
column1.put(ExcelUtils.COLUMN_TEXT, "用户名");
columns.add(column1);
*/
public static boolean exportFromJSONArray(String fileName, String sheetName,JSONArray ja,
List<Map<String, String>> columns) {
boolean isSuccess=true;
WritableWorkbook book;
try {
//确保保存文件目录存在
String filePathStr=fileName.substring(0,fileName.lastIndexOf(File.separatorChar));
File filePath=new File(filePathStr);
if(!filePath.exists()){
filePath.mkdirs();
}
//确保保存文件存在
File file=new File(fileName);
if(!file.exists()){
file.createNewFile();
}
// 在指定地址创建EXCEL表
book = Workbook.createWorkbook(file);
// 设置第一个工作薄的名字
WritableSheet sheet = book.createSheet(sheetName, 0); // 设置列头
for (int i = 0; i < columns.size(); i++) {
// 设置列宽
sheet.setColumnView(i, 20);
// 设置列头样式
// 分别设置表头,表元的格式
WritableFont fontb = new WritableFont(WritableFont.ARIAL, 8,
WritableFont.BOLD, false); // 粗体
WritableCellFormat formatb = new WritableCellFormat(fontb);
formatb.setAlignment(Alignment.CENTRE); // 水平居中
formatb.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直居中
formatb.setBorder(Border.ALL, BorderLineStyle.THIN); // 边框
// 填充列名
Label labelb = new Label(i, 0, columns.get(i).get("text"),
formatb);
sheet.addCell(labelb);
} //设置数据单元格格式
WritableFont fontc = new WritableFont(WritableFont.ARIAL, 8,
WritableFont.NO_BOLD, false);
WritableCellFormat formatc = new WritableCellFormat(fontc);
formatc.setAlignment(Alignment.CENTRE);
formatc.setVerticalAlignment(VerticalAlignment.CENTRE);
formatc.setBorder(Border.ALL, BorderLineStyle.THIN);
// 填充数据
for (int i = 0; i < ja.size(); i++) {
JSONObject jo = ja.getJSONObject(i);
// 按照预设的列顺序填充
for (int j = 0; j < columns.size(); j++) {
String key = columns.get(j).get("key");
Object text = jo.get(key);
// 如果是数字,则按照数字的格式填充
if (text != null && text.toString().matches("\\d+")) {
Number numberc = new Number(j, i+1, Long.parseLong(text.toString()),
formatc);
sheet.addCell(numberc);
} else {
//其余全按文字处理
Label labelb = new Label(j, i+1, text.toString(), formatc);
sheet.addCell(labelb);
}
}
} book.write();
book.close();
} catch (IOException e) {
e.printStackTrace();
isSuccess=false;
} catch (RowsExceededException e) {
e.printStackTrace();
isSuccess=false;
} catch (WriteException e) {
e.printStackTrace();
isSuccess=false;
}
return isSuccess;
}
}
使用JExcel导出excel文件的更多相关文章
- ExtJS Grid导出excel文件
ExtJS Grid导出excel文件, 需下载POI:链接:http://pan.baidu.com/s/1i3lkPhF 密码:rqbg 1.将Grid表格数据连同表格列名传到后台 2.后台导出e ...
- PHP从数据库导出EXCEL文件
参考博客链接:http://www.cnblogs.com/huangcong/p/3687665.html 我的程序代码 原生导出Excel文件 <?phpheader('Content-ty ...
- jxl导出Excel文件
一.java项目实现读取Excel文件和导出Excel文件 实现读取和导出Excel文件的代码: package servlet; import java.io.FileInputStream; im ...
- PHP导出excel文件
现在教教你如何导入excel文件: 在我的文件储存里面有一个com文件夹的,将其解压放在ThinkPHP/Library/文件夹里面,然后就是写控制器啦!去调用这个插件: <?php names ...
- 【转】 (C#)利用Aspose.Cells组件导入导出excel文件
Aspose.Cells组件可以不依赖excel来导入导出excel文件: 导入: public static System.Data.DataTable ReadExcel(String strFi ...
- PHPExcel导出excel文件
今天园子刚开,先来个货顶下,后续园丁qing我会再慢慢种园子的,希望大家多来园子逛逛. PHPExcel导出excel文件,先说下重要的参数要记住的东西 impUser() 导入方法 exportEx ...
- 导出Excel文件
/// <summary> /// 类说明:Assistant /// 更新网站:[url=http://www.sufeinet.com/thread-655-1-1.html]http ...
- 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法
-----转载:http://blog.csdn.net/sgear/article/details/7663502 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格 ...
- MSSQL2005 导出excel文件
Title:MSSQL2005 导出excel文件 --2011-01-16 16:01 EXEC master..xp_cmdshell 'bcp "select * from 数据库名 ...
随机推荐
- MyEclipse10
1.配置tomcat Windows->Preferences->My Eclipse->Servers->Tomcat,对于64位操作系统而言,Tomcat home dir ...
- Javascript AMD模块化规范-备用
AMD是"Asynchronous Module Definition"的缩写,意思是"异步模块定义". 模块定义define(id?, dependencie ...
- Android Learning:多线程与异步消息处理机制
在最近学习Android项目源码的过程中,遇到了很多多线程以及异步消息处理的机制.由于之前对这块的知识只是浅尝辄止,并没有系统的理解.但是工程中反复出现让我意识到这个知识的重要性.所以我整理出这篇博客 ...
- jackson学习----解析豆瓣的图书信息
异常一. org.codehaus.jackson.map.JsonMappingException: No suitable constructor found for type [simple ...
- AvalonDock结合MVVM模式的应用
原始代码及文章参考:http://www.codeproject.com/Articles/239342/AvalonDock-and-MVVM 环境:VS2010 源码:http://files.c ...
- Contest20140906 ProblemC 菲波拉契数制 DP
C.菲波拉契数制时间:2s 内存:65536KB我们定义如下数列为菲波拉契数列: F (1) = 1 F (2) = 2 ...
- Codeforces 161D
树形DP: 要求找出树上距离为k的点的对数: 对于每个节点,经过这个节点的符合条件的的点有两种: 第一种:距离他为i的儿子和他爸爸中距离他爸爸为k-i-1:(不是符合的点对中的一个) 第二种:他儿子中 ...
- Cxf soap协议改成1.2
在和.net做联调的时候,报错: A SOAP 1.2 message is not valid when sent to a SOAP 1.1 only endpoint. 看来是soap协议不匹配 ...
- OA系统配置文件
第一章 web.xml配置文件解读 1. web.xml文件解读 lemon OA系统的核心配置文件都放在spring目录下的具有applicationContext的前缀文件.Classpath后有 ...
- 最详细在Windows安装Xamarin.iOS教程
最详细在Windows安装Xamarin.iOS教程 来源:http://www.cnblogs.com/llyfe2006/articles/3098280.html 本文展示了如何设立Xamari ...