`
dq1618
  • 浏览: 57075 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

xml文件转换为excel文件

阅读更多
import java.io.File;
import java.io.IOException;

import java.io.Serializable;
import java.util.List;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;


public class ReportExportExcel implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;

protected final Log logger = LogFactory.getLog(getClass());

public void createSheet(HSSFWorkbook wb,long rptno, String filename,
HttpServletResponse response) {
try {

SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(new File(filename));

String excelname = "report_" + rptno + ".xls";
String sheetname = "report_" + rptno;
HSSFSheet sheet = wb.createSheet(sheetname);

Element root = doc.getRootElement();
List list = root.getChildren();

HSSFCellStyle headingCellStyle = wb.createCellStyle();
headingCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
HSSFFont headingCellFont = wb.createFont();
headingCellFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
headingCellStyle.setFont(headingCellFont);
HSSFRow row;
row = sheet.createRow((short) 0);
if (list != null && list.size() > 0) {
Element element = (Element) list.get(0);
int length = element.getChildren().size();
for (int i = 0; i < length; i++) {
String columnName = ((Element) element.getChildren().get(i))
.getName();
if (columnName == null)
columnName = "";
else if (columnName.length() >= 1)
columnName = columnName.substring(0, 1).toUpperCase()
+ columnName.substring(1);
HSSFCell cell = row.createCell((short) (i));
cell.setCellValue(columnName);
cell.setCellStyle(headingCellStyle);
}
}

short rowIndex = 0;
for (int i = 0; i<list.size(); i++) {
Element section = (Element) list.get(i);
List sect = section.getChildren();
row = sheet.createRow((short) ++rowIndex);
for (int colIndex = 0; colIndex < sect.size(); colIndex++) {
HSSFCell cell = row.createCell((short) colIndex);
cell.setCellValue(((Element) sect.get(colIndex)).getText());
}
}
writeExcelFile(wb, response, excelname);


} catch (Exception e) {
logger.error(e);
}


}

public void writeExcelFile(HSSFWorkbook wb,
HttpServletResponse response, String fileName) throws IOException {

response.reset();
ServletOutputStream sos = response.getOutputStream();
response.setContentType("application/ms-excel");
response.setHeader("Content-disposition", "attachment; filename="
+ fileName);
wb.write(sos);
sos.flush();
sos.close();
}

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics