groovy : poi 导出 Excel xlsx

write_xlsx.groovy 代码如下

package xlsx;
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.xssf.usermodel.XSSFDataFormat;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

class Text2xlsx {

	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 write_xlsx(String filename) {
		if (filename==null || filename=='') return;
		def idx = filename.lastIndexOf('.');
		def fname = filename.substring(0,idx);
		def file2 = fname +".xlsx" as String;
		def shname = fname.tokenize('\\')[-1] as String;
		println "${file2} , ${shname}"

		// 创建新的Excel 工作簿
		XSSFWorkbook workbook = new XSSFWorkbook();
		XSSFSheet sheet = workbook.createSheet(shname);
		// 用于格式化单元格的数据
		XSSFDataFormat format = workbook.createDataFormat();
		// 设置单元格类型
		XSSFCellStyle cellStyle = workbook.createCellStyle();
		cellStyle.setDataFormat(format.getFormat("0.00;-0.00"));
		XSSFRow row = null;
		XSSFCell 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]+(.[0-9]+)?$/){ // 是数字
							cell.setCellValue(new BigDecimal(alist[j]));
							cell.setCellStyle(cellStyle);
						} else {
							cell.setCellValue((String)alist[j]);
						}
				}
				i ++ ;
			}
		}
		// 创建文件输出流,输出电子表格
		try {
			OutputStream 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 Text2xlsx();
		app.write_xlsx(filename);
	}
}

直接运行 groovy write_xlsx

时间: 2024-10-03 04:58:31

groovy : poi 导出 Excel xlsx的相关文章

groovy : poi 读取 Excel xlsx

下载 poi-bin-3.10-FINAL-20140208.zip 解压后 copy poi-3.10-FINAL-20140208.jar poi-ooxml-3.10-FINAL-20140208.jar poi-ooxml-schemas-3.10-FINAL-20140208.jar ooxml-lib\dom4j-1.6.1.jar ooxml-lib\dom4j-1.6.1.jar ooxml-lib\xmlbeans-2.3.0.jar to D:\groovy-1.8.9\li

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 j

使用Apache POI导出Excel小结--导出XLS格式文档

使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI导出Excel小结--导出XLSX格式文档 使用Apache POI导出Excel--大数量导出 导出XLS格式文档 做企业应用项目难免会有数据导出到Excel的需求,最近在使用其,并对导出Excel封装成工具类开放出来供大家参考.关于Apache POI Excel基本的概念与操作我在这里就不啰嗦

POI导出EXCEL经典实现(转)

http://www.cnblogs.com/xwdreamer/archive/2011/07/20/2296975.html 1.Apache POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能. .NET的开发人员则可以利用NPOI (POI for .NET) 来存取 POI 的功能. 2.POI结构 HSSF - 提供读写Microsoft Excel XLS格式档案的功能.XS

使用poi导出Excel

很多时候,一个软件应用程序需要生成Microsoft Excel文件格式的报告.有时,一个应用程序甚至希望将Excel文件作为输入数据. 常见的java Excel  API Java Aspose Cells Java Aspose Cells 是一种纯粹的Java授权的Excel API,开发和供应商Aspose发布.这个API的最新版本是8.1.2,发布于2014年7月,是一个丰富而厚重的API(普通Java类和AWT类的组合)设计,可以读.写和操纵电子表格Excel的组件.此API常见用

基于POI导出Excel数据

基于POI导出Excel数据 在项目中会有许多报表业务,需要导出数据.在这里我们采用基于POI的方式解析.POI有俩种解析方式HSSF(xls格式)和XSSF(xlsx). 以BOS物流的运单管理界面为例: 前端代码 导出运单信息,生成报表: 1.添加导出按钮 2.添加导出事件 后台代码实现 POI生成Excel步骤写Excel过程一样,新建Excel文档----新建Sheet---新建Row---新建Cell单元格---写单元格数据. Maven导入jar包信息请参加一键上传里面的配置 Act

POI导出excel的三种方式

原文链接:https://www.cnblogs.com/zhaoblog/p/7661245.html poi导出excel最常用的是第一种方式HSSFWorkbook,不过这种方式数据量大的话会产生内存溢出问题,SXSSFWorkbook是一种大数据量导出格式,csv是另一种excel导出的一种轻快的实现. 先介绍一下这三种格式的特点 1 HSSFWorkbook  excel文件底层是txt实现,我们经常见到的excel都是这种实现的. 2 SXSSFWorkbook  excel文件底层

poi导出excel设置样式

由于要利用poi导出excel(XSSFWorkbook),而且要添加样式,搜索其他的结果无非都是颜色值,经查询的结果,做一下总结: 1.设置背景色,要用  style.setFillForegroundColor(IndexedColors.YELLOW.getIndex()); 使用 style.setFillBackgroundColor(bg);方法总是出现一个黑块,所以改为上面的写法,结果正确 颜色的问题,可以在 IndexedColors 中查到,是个枚举 2.有合并单元格的情况下,

Springboot利用poi导出excel下载

Springboot利用poi导出excel下载 因为项目中之前的做法是用反射获取属性,所以demo中也是用的反射,我看网上很多文章都是存入一个List中,不知道这两种哪种更何合适一点,或者有什么更好的方法也请大佬们赐教. pom <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.13</version&g