fairnet/src/main/java/seed/utils/SeedCvtXLSToHtml.java
2024-09-25 18:30:37 +09:00

140 lines
4.7 KiB
Java

package seed.utils;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.FactoryConfigurationError;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.apache.log4j.Logger;
import org.apache.poi.hssf.converter.ExcelToHtmlConverter;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
public class SeedCvtXLSToHtml {
private Logger log = Logger.getLogger(this.getClass());
// public static void main(String args[]){
//
// String filePath = "F:/javaConvert/test/test.xls";
// String output = "F:/javaConvert/test/img/";
//
// new SeedCvtXLSToHtml().convert(filePath, output);
// }
public void convert(String filePath, String output) {
boolean success = false;
if(filePath.endsWith(".xls")) {
File file = new File(filePath);
if (file.exists()) {
POIFSFileSystem fs = null;
FileOutputStream fileOutputStream = null;
OutputStreamWriter outputStreamWriter = null;
BufferedWriter bufferedWriter = null;
try {
fs = new POIFSFileSystem(new FileInputStream(filePath));
HSSFWorkbook hSSFWorkbook = new HSSFWorkbook(fs);
ExcelToHtmlConverter excelToHtmlConverter = new ExcelToHtmlConverter(
DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());
excelToHtmlConverter.processWorkbook(hSSFWorkbook);
StringWriter stringWriter = new StringWriter();
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
transformer.setOutputProperty(OutputKeys.METHOD, "html");
transformer.transform(
new DOMSource(excelToHtmlConverter.getDocument()),
new StreamResult(stringWriter));
fileOutputStream = new FileOutputStream(output + getFileName(filePath) + ".jsp");
outputStreamWriter = new OutputStreamWriter(fileOutputStream, "UTF-8");
bufferedWriter = new BufferedWriter(outputStreamWriter);
bufferedWriter.write("<%@ page contentType=\"text/html;charset=utf-8\" %>");
bufferedWriter.write("\n");
bufferedWriter.write(stringWriter.toString());
bufferedWriter.flush();
success = true;
} catch (TransformerConfigurationException e) {
log.error("CHECK ERROR:",e);
success = false;
} catch (TransformerFactoryConfigurationError e) {
log.error("CHECK ERROR:",e);
success = false;
} catch (TransformerException e) {
log.error("CHECK ERROR:",e);
success = false;
} catch (ParserConfigurationException e) {
log.error("CHECK ERROR:",e);
success = false;
} catch (FactoryConfigurationError e) {
log.error("CHECK ERROR:",e);
success = false;
} catch (FileNotFoundException e) {
log.error("CHECK ERROR:",e);
success = false;
} catch (UnsupportedEncodingException e) {
log.error("CHECK ERROR:",e);
success = false;
} catch (IllegalArgumentException e) {
log.error("CHECK ERROR:",e);
success = false;
} catch (IOException e) {
log.error("CHECK ERROR:",e);
success = false;
} catch (Exception e) {
log.error("CHECK ERROR:",e);
success = false;
} finally{
if(bufferedWriter!=null){try{bufferedWriter.close();}catch(IOException e){log.error("CHECK ERROR:",e);}}
if(outputStreamWriter!=null){try{outputStreamWriter.close();}catch(IOException e){log.error("CHECK ERROR:",e);}}
if(fileOutputStream!=null){try{fileOutputStream.close();}catch(IOException e){log.error("CHECK ERROR:",e);}}
}
}
if(!success){
SeedUtils.setSeedDeleteFiles(output, "");
}
}
}
private static String getFileName(String filePath){
int sep = filePath.lastIndexOf("\\") == -1 ? filePath.lastIndexOf("/") : filePath.lastIndexOf("\\");
return filePath.substring( sep + 1 , filePath.lastIndexOf("."));
}
}