java 导出xml文件_[java]实现导出Excel文件和XML文件 | 学步园

public class ExportFileService {

private static final String SAVEPATH = "D:\\";

private static final String BUTTONTEXT = "导出";

private static final String TITLE = "导出数据";

public ExportFileService(){

}

/**

*

* @param filters 可选择的导出类型

* @return file[0] 文件全路径;file[1] 导出类型

*/

public static String[] exportFile(List filters){

JFileChooser fileChooser = initEmportFile(filters);

int result = fileChooser.showOpenDialog(null);

String type = fileChooser.getFileFilter().getDescription();

if (result == JFileChooser.APPROVE_OPTION) {

File file = fileChooser.getSelectedFile();

String fn = file.getPath();

String[] fileAndType = new String[2];

fileAndType[0]=fn;

fileAndType[1]=type;

return fileAndType;

}

return null;

}

/**

* 文件对话框中判断是否覆盖已存在文件,加入带导入类型

* @param filters 可选择的导入类型

* @return 文件选择框

*/

private static JFileChooser initEmportFile(List filters) {

JFileChooser fileChooser = new JFileChooser(SAVEPATH) {

private static final long serialVersionUID = 1L;

public void approveSelection() {

File file;

String fileName = this.getSelectedFile().getAbsolutePath();

file = new File(fileName);

if (file.exists()) {

int copy = JOptionPane.showConfirmDialog(null,

"是否要覆盖当前文件?", "保存", JOptionPane.YES_NO_OPTION,

JOptionPane.QUESTION_MESSAGE);

if (copy == JOptionPane.YES_OPTION) {

super.setSelectedFile(file);

super.approveSelection();

}

} else

super.approveSelection();

}

};

fileChooser.setAcceptAllFileFilterUsed(false);

fileChooser.setApproveButtonText(BUTTONTEXT);

fileChooser.setDialogTitle(TITLE);

for(FileFilter one :filters){

fileChooser.addChoosableFileFilter( one);

}

return fileChooser;

}

/**

* 创建新的Excel 工作簿

* @param filename 待导出文件名称的全路径,不带后缀

* @param data 待导出数据,首个list是字段信息

* @param sheetName 表单名称

* @return true 导出成功;false 导出失败

*/

@SuppressWarnings("deprecation")

public static boolean createExcel(String filename, List> data,

String sheetName) {

HSSFWorkbook workbook = null;

HSSFSheet sheet = null;

HSSFRow[] rows = null;

HSSFCell[][] cells = null;

workbook = new HSSFWorkbook();

if (sheetName.trim().equals("")) {

sheet = workbook.createSheet("表");

} else {

sheet = workbook.createSheet(sheetName);

}

try {

int row = 0;

int col = 0;

if (data.size() > 0) {

row = data.size();

col = data.get(0).size();

}

rows = new HSSFRow[row];

cells = new HSSFCell[row][col];

for (int i = 0; i < data.size(); i++) {

rows[i] = sheet.createRow((short) i);

for (int j = 0; j < data.get(i).size(); j++) {

cells[i][j] = rows[i].createCell((short) j);

cells[i][j].setCellType(HSSFCell.CELL_TYPE_STRING);

if (data.get(i).get(j) != null

&& !data.get(i).get(j).toString().trim().equals("")) {

cells[i][j].setCellValue(data.get(i).get(j).toString()

.trim());

} else {

cells[i][j].setCellValue("");

}

}

}

FileOutputStream fOut = new FileOutputStream(filename);

// 把相应的Excel 工作簿存盘

workbook.write(fOut);

fOut.flush();

// 操作结束,关闭文件

fOut.close();

return true;

} catch (Exception e) {

return false;

}

}

/**

* 生成XML文件

* @param filename 待导出文件名称的全路径,不带后缀

* @param data 待导出数据,首个list是字段信息

* @return true 导出成功;false 导出失败

*/

public static boolean createXML(String filename, List> data) {

Document doc = DocumentHelper.createDocument();

Element root = doc.addElement("root");

List name = data.get(0);

for (int i = 1; i < data.size(); i++) {

Element row = root.addElement("row");

for (int j = 0; j < name.size(); j++) {

Element cell = row.addElement("col" + j);

cell.setText(null == data.get(i).get(j) ? "" : data.get(i)

.get(j).toString());

cell.addAttribute("name", name.get(j).toString());

}

}

try {

FileOutputStream fOut = new FileOutputStream(filename);

OutputFormat format = new OutputFormat(" ", true);

format.setEncoding("utf-8");

// 可以把System.out改为你要的流。

XMLWriter xmlWriter = new XMLWriter(fOut, format);

xmlWriter.write(doc);

xmlWriter.close();

return true;

} catch (IOException e) {

e.printStackTrace();

}

return false;

}

}

[java]

/**

* XML文件类型

* @author rwq

*

*/

public class MyFileFilterXML extends javax.swing.filechooser.FileFilter {

private List ext=new ArrayList();

public MyFileFilterXML(){

ext.add(".XML");

ext.add(".xml");

}

public List getExt() {

return ext;

}

public boolean accept(java.io.File pathname) {

String fn = pathname.getAbsolutePath().toString();

if (fn.length() > 4)

fn = fn.substring(fn.length() - 4, fn.length());

if (ext.contains(fn)|| pathname.isDirectory())

return true;

return false;

}

public String getDescription() {

return "XML文件(*.xml)";

}

}

[java]

/**

* Excel文件类型

* @author rwq

*

*/

public class MyFileFilterExcel extends javax.swing.filechooser.FileFilter {

private List ext=new ArrayList();

public MyFileFilterExcel(){

ext.add(".XLS");

ext.add(".xls");

ext.add("xlsx");

ext.add("XLSX");

}

public List getExt() {

return ext;

}

public boolean accept(java.io.File pathname) {

String fn = pathname.getAbsolutePath().toString();

if (fn.length() > 4){

fn = fn.substring(fn.length() - 4, fn.length());

}

if (ext.contains(fn) || pathname.isDirectory()){

return true;

}

return false;

}

public String getDescription() {

return "Excel文件(*.xls,*.xlsx)";

}

}

四、调用方式

[java]

/**

* 导出

*/

private void export() {

MyFileFilterExcel excelFilter = new MyFileFilterExcel();

MyFileFilterXML xmlFilter = new MyFileFilterXML();

List filters = new ArrayList();

filters.add(excelFilter);

filters.add(xmlFilter);

boolean createFileRs = false;

String[] pathAndTypeStr = ExportFileService.exportFile(filters);

if(pathAndTypeStr==null){

return ;

}

List> data = changeDataToFile();

if (pathAndTypeStr[1].equals(excelFilter.getDescription())) {

pathAndTypeStr[0] = pathAndTypeStr[0] + ".xls";

createFileRs = ExportFileService.createExcel(pathAndTypeStr[0], data,

viewAccountV.comboxYearAndMonth.getSelectedItem().toString());

} else if (pathAndTypeStr[1].equals(xmlFilter.getDescription())) {

pathAndTypeStr[0] = pathAndTypeStr[0] + ".xml";

createFileRs = ExportFileService.createXML(pathAndTypeStr[0], data);

}

JOptionPane.showMessageDialog(null, "文件导出"

+ (createFileRs ? "成功" : "失败"), "提示",

JOptionPane.INFORMATION_MESSAGE);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值