groovy : poi 读取 Excel xlsx
发布时间:2020-12-14 16:49:26 所属栏目:大数据 来源:网络整理
导读:从? http://poi.apache.org/download.html 下载?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-libdom4j-1.6.1.jar ooxml-libstax-api-
|
从?http://poi.apache.org/download.html 下载?poi-bin-3.10-FINAL-20140208.zip 解压后 copy? 参考?poi-3.10-FINAL/docs/spreadsheet/quick-guide.html read_xlsx.groovy ?代码如下 package xlsx;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.io.File;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
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 ReadExcel {
//取得日期列
private static String getDataCellVal(XSSFCell cell) {
Date date = cell.getDateCellValue();
def format = new SimpleDateFormat("yyyy-MM-dd");
return format.format(date);
}
private static String getCellVal(XSSFCell cell) {
if (cell.getCellType() == XSSFCell.CELL_TYPE_BLANK) {
return ""
} else if (cell.getCellType() == XSSFCell.CELL_TYPE_BOOLEAN) {
return cell.getBooleanCellValue();
} else if (cell.getCellType() == XSSFCell.CELL_TYPE_ERROR) {
return cell.getErrorCellValue();
} else if (cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC) {
return cell.getNumericCellValue();
} else if (cell.getCellType() == XSSFCell.CELL_TYPE_STRING) {
return cell.getStringCellValue();
} else {
return cell.getStringCellValue();
}
}
private static String getFilename(String initDir) {
if (initDir==null || initDir=='') initDir='.';
def chooser=new JFileChooser(initDir)
def filter = new FileNameExtensionFilter('Excel','xlsx')
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 readExcel(String filename) {
if (filename==null || filename=='') return;
def outfile = new File(filename.replace('.xlsx','.txt'));
def fp = outfile.newPrintWriter();
println filename
XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(filename));
(0..<wb.numberOfSheets).each{
XSSFSheet sheet = wb.getSheetAt(it)
int rows = sheet.physicalNumberOfRows
println " sheet:"" + wb.getSheetName(it) + "" has " + rows + " row(s)."
(0..<rows).each{ r ->
XSSFRow row = sheet.getRow(r)
if (row != null) {
int cells = row.physicalNumberOfCells
// println "nROW " + row.rowNum + " has " + cells + " cell(s)."
(0..<cells).each{ c ->
XSSFCell cell = row.getCell(c)
if (cell == null){
if(c==(cells-1)) fp.println '';
else fp.print 't';
}else{
if(c==(cells-1)) fp.println getCellVal(cell);
else fp.print getCellVal(cell)+'t';
}
}
}
}
}
fp.flush();
fp.close();
}
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 ReadExcel();
app.readExcel(filename);
}
}
直接运行 groovy read_xlsx 如果想保护源代码,就编译?groovyc read_xlsx.groovy run.bat ?如下 @echo off set JarPATH=%GROOVY_HOME%/embeddable/groovy-all-1.8.9.jar set JarPATH=%JarPATH%;%GROOVY_HOME%/lib/poi-3.10-FINAL-20140208.jar set JarPATH=%JarPATH%;%GROOVY_HOME%/lib/poi-ooxml-3.10-FINAL-20140208.jar set JarPATH=%JarPATH%;%GROOVY_HOME%/lib/poi-ooxml-schemas-3.10-FINAL-20140208.jar set JarPATH=%JarPATH%;%GROOVY_HOME%/lib/dom4j-1.6.1.jar set JarPATH=%JarPATH%;%GROOVY_HOME%/lib/stax-api-1.0.1.jar set JarPATH=%JarPATH%;%GROOVY_HOME%/lib/xmlbeans-2.3.0.jar java -cp %JarPATH%;. xlsx.ReadExcel pause 运行 run.bat (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
