groovy : poi 导出 Excel
參考 poi-3.10-FINAL/docs/spreadsheet/quick-guide.html
write_xls.groovy 代码例如以下
package xls;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; class Text2xls { private static String getFilename(String initDir) {
if (initDir==null || initDir=='') initDir='.';
def chooser=new JFileChooser(initDir)
def filter = new FileNameExtensionFilter('Text', 'txt')
chooser.setFileFilter(filter)
chooser.setDialogTitle("Open")
if(chooser.showSaveDialog() == JFileChooser.APPROVE_OPTION)
return chooser.getSelectedFile()
else if(chooser.showSaveDialog() == JFileChooser.CANCEL_OPTION)
return null
else
return null
} void writeExcel(String filename) {
if (filename==null || filename=='') return;
def idx = filename.lastIndexOf('.');
def fname = filename.substring(0,idx);
def file2 = fname +".xls" as String;
def shname = fname.tokenize('\\')[-1] as String;
println "${file2} , ${shname}" // 创建新的Excel 工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet(shname);
// 用于格式化单元格的数据
HSSFDataFormat format = workbook.createDataFormat();
// 设置单元格类型
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(format.getFormat("0.00;-0.00"));
HSSFRow row = null;
HSSFCell cell = null;
int n=0;
int i=0; // rowIndex
int j=0;
def alist =[]
new File(filename).eachLine{ line ->
alist = line.tokenize('\t');
n = alist.size();
if (n >0){
row = sheet.createRow(i); // 创建新行(row)
for(j=0; j<n; j++){
cell = row.createCell(j); // 创建单元格
if (alist[j]!=null)
if (alist[j]=~/^[0-9]+$/){
cell.setCellValue((String)alist[j]);
else if (alist[j]=~/^-?[0-9]+\.[0-9]+$/){ // 是数字
cell.setCellValue(new BigDecimal(alist[j]));
cell.setCellStyle(cellStyle);
} else {
cell.setCellValue((String)alist[j]);
}
}
i ++ ;
}
}
// 创建文件输出流。输出电子表格
try {
def fout = new FileOutputStream(file2);
workbook.write(fout);
fout.close();
} catch(e){
println e;
}
} static void main(args) {
def filename =null;
if (args.size()==1)
filename = getFilename(args[0]);
else
filename = getFilename('.');
if (filename==null) return;
def app = new Text2xls();
app.writeExcel(filename);
}
}
直接执行 groovy write_xls
groovy : poi 导出 Excel的更多相关文章
- groovy : poi 导出 Excel xlsx
參考 file:///poi-3.10-FINAL/docs/spreadsheet/how-to.html#sxssf text2xlsx.groovy 代码例如以下 package xlsx; i ...
- poi导出excel
Java使用poi组件导出excel报表,能导出excel报表的还可以使用jxl组件,但jxl想对于poi功能有限,jxl应该不能载excel插入浮动层图片,poi能很好的实现输出excel各种功能, ...
- POI导出excel的简单demo
目前使用过两种导出excel的方式,一种是如题所示的使用POI的方式进行数据的导出,这种方式一般只有在处理比较多的数据或者说需要导出的excel表格中有图片之类的需要特殊处理的文件的时候使用:还有一种 ...
- [转载]poi导出excel,可以自定义保存路径
poi导出excel比js导出excel安全性更好,在使用poi导出excel时,先要导入poi-3.5-FINAL-20090928.jar包到你项目的lib目录下,我这里选择是3.5版的 1.ac ...
- POI导出EXCEL经典实现
1.Apache POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能. .NET的开发人员则 ...
- Java POI 导出EXCEL经典实现 Java导出Excel
转自http://blog.csdn.net/evangel_z/article/details/7332535 在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者 ...
- java中使用poi导出excel表格数据并且可以手动修改导出路径
在我们开发项目中,很多时候会提出这样的需求:将前端的某某数据以excel表格导出,今天就给大家写一个简单的模板. 这里我们选择使用poi导出excel: 第一步:导入需要的jar包到 lib 文件夹下
- 重构:以Java POI 导出EXCEL为例
重构 开头先抛出几个问题吧,这几个问题也是<重构:改善既有代码的设计>这本书第2章的问题. 什么是重构? 为什么要重构? 什么时候要重构? 接下来就从这几个问题出发,通过这几个问题来系统的 ...
- 重构:以Java POI 导出EXCEL为例2
前言 上一篇博文已经将一些对象抽象成成员变量以及将一些代码块提炼成函数.这一节将会继续重构原有的代码,将一些函数抽象成类,增加成员变量,将传入的参数合成类等等. 上一篇博文地址:http://www. ...
随机推荐
- PHP_SELF、 SCRIPT_NAME、 REQUEST_URI差别
$_SERVER[PHP_SELF], $_SERVER[SCRIPT_NAME], $_SERVER['REQUEST_URI'] 在使用方法上是很相似的,他们返回的都是与当前正在使用的页面地址有关 ...
- Codeforces 452A Eevee
#include<bits/stdc++.h> using namespace std; string m[]={"vaporeon","jolteon&qu ...
- cocos2d-x 旅程開始--(实现瓦片地图中的碰撞检測)
转眼隔了一天了,昨天搞了整整一下午加一晚上,楞是没搞定小坦克跟砖头的碰撞检測,带着个问题睡觉甚是难受啊!还好今天弄成功了.只是感觉程序不怎么稳定啊.并且发现自己写的东西让我重写一遍的话我肯定写不出来. ...
- warning: directory not found for option ' '
解决: 选择项目名称-->Targets-->Build Settings-->Search Paths-->Library Search Paths 删除相应路径
- c++进阶
对网络编程/多线程/系统编程有一定了解:4:对ngnix,redis,memcache有一定了解:5:有高并发服务开发经验优先: 因为C/C++在嵌入式.移动互联网.物联网有很大的优势,有很多人就靠一 ...
- 一个简单而经典的RTX51 Tiny应用实例
关于RTX51 Tiny嵌入式实时操作系统的描写叙述请參考本人的上一篇博文(RTX51 Tiny实时操作系统学习笔记-初识RTX51 Tiny). 本篇博文.我将通过一个实例代码,带大家深入了解一下R ...
- Jquery 对话框确认
$("#aa").click(function(){ if(confirm("是否继续")){ $(#aa).fadeOut(500); } })
- MYSQL中的字符串连接符
update `table` set nsdf = concat('a','b') where id=137
- SharedPreferences共享优先存储的详细解析和原理
共享优先存储: publicvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setCont ...
- django 带參数的 url
url就像筋络一样把django这个大框架的各个部分紧紧的连接成一个总体,所以要了解django从url開始是一个不错的方向. 一般的view template url的关系这里就不讲了,以下会具体介 ...