输入sheet表名
package com.brains.crm.i18;
import java.io.*;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.apache.ofbiz.base.util.Debug;
import org.apache.ofbiz.base.util.UtilValidate;
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;
import org.apache.poi.ss.usermodel.CellType;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
/**
* @version 1.0
* @author: wjq
* @description
* @date 2022/5/30 12:51
*/
public class ExcelToXml {
public static void main(String[] args) {
try {
InputStream inp = new FileInputStream(new File("D:\\CRM-中英文-王金强.xlsx"));
String sheetName = "order";
List<Map<String, String>> list = readExcel(inp, sheetName);
// dealList(list);
StringBuffer sb = new StringBuffer();
sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
sb.append("<resource xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"https://ofbiz.apache.org/dtds/ofbiz-properties.xsd\">\n");
for (Map<String, String> map : list) {
if (UtilValidate.isNotEmpty(map.get("KEY"))) {
sb.append(" <property key=\"").append(map.get("KEY").replace(" ","")).append("\">\n");
} else if (UtilValidate.isNotEmpty(map.get("英文"))) {
sb.append(" <property key=\"").append(map.get("英文").replace(" ","")).append("\">\n");
} else {
sb.append(" <property key=\"").append(map.get("KEY")).append("\">\n");
}
sb.append(" <value xml:lang=\"zn\">").append(map.get("中文")).append("</value>\n");
sb.append(" <value xml:lang=\"en\">").append(map.get("英文")).append("</value>\n");
sb.append(" <value xml:lang=\"ja\">").append(map.get("日文")).append("</value>\n");
sb.append(" </property>\n");
}
sb.append("</resource>\n");
System.out.println(sb.toString());
// 生成xml文件
File file = new File("E:\\workspace\\svn\\scsk_pj\\SccmPlatform\\04Code\\crm\\trunk\\plugins\\crm\\config\\CrmUitLabels-" + sheetName + ".xml");
if (!file.exists()) {
file.createNewFile();
}
OutputFormat format = OutputFormat.createPrettyPrint();
format.setIndent(true);// 设置缩进
format.setIndent(" ");// 空行方式缩进
format.setNewlines(true);// 设置换行
XMLWriter writer = new XMLWriter(new FileOutputStream(file), format);
// 设置是否转义,默认使用转义字符
writer.setEscapeText(false);
writer.write(sb.toString());
writer.close();
System.out.println("生成.xml成功");
} catch (Exception e) {
Debug.logError(e, "生成.xml文件失败");
System.out.println("生成.xml失败");
}
}
/**
* 读取Excel文件的内容
*
* @param inputStream excel文件,以InputStream的形式传入
* @param sheetName sheet名字
* @return 以List返回excel中内容
*/
public static List<Map<String, String>> readExcel(InputStream inputStream, String sheetName) {
//定义工作簿
XSSFWorkbook xssfWorkbook = null;
try {
xssfWorkbook = new XSSFWorkbook(inputStream);
} catch (Exception e) {
System.out.println("Excel data file cannot be found!");
}
//定义工作表
XSSFSheet xssfSheet;
if ("".equals(sheetName)) {
// 默认取第一个子表
assert xssfWorkbook != null;
xssfSheet = xssfWorkbook.getSheetAt(0);
} else {
assert xssfWorkbook != null;
xssfSheet = xssfWorkbook.getSheet(sheetName);
}
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
int maxRow = xssfSheet.getLastRowNum();
//默认第一行为标题行,index = 0
XSSFRow titleRow = xssfSheet.getRow(0);
// System.out.println("总行数为:" + maxRow);
for (int row = 1; row <= maxRow; row++) {
XSSFRow xss = xssfSheet.getRow(row);
if (xss != null) {
int maxRol = xssfSheet.getRow(row).getLastCellNum();
// System.out.println("--------第" + row + "行的数据如下--------");
Map<String, String> map = new LinkedHashMap<String, String>();
for (int rol = 1; rol < maxRol; rol++) {
XSSFCell cell = xssfSheet.getRow(row).getCell(rol);
if (UtilValidate.isNotEmpty(cell)) {
cell.setCellType(CellType.STRING);
//System.out.print(cell.getStringCellValue());
if (UtilValidate.isNotEmpty(titleRow.getCell(rol))) {
map.put(titleRow.getCell(rol).getStringCellValue(), cell.getStringCellValue());
}
}
}
//System.out.println();
list.add(map);
}
}
//System.out.println();
int i = 1;
for (Map<String, String> map1 : list) {
//System.out.print(i+" ");
for (Object key : map1.keySet()) {
//System.out.print(" "+key+":"+map1.get(key));
}
//System.out.println();
i++;
}
return list;
}
}
直接整个Excle表
package com.brains.crm.i18;
import java.io.*;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.apache.ofbiz.base.util.Debug;
import org.apache.ofbiz.base.util.UtilValidate;
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;
import org.apache.poi.ss.usermodel.CellType;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
/**
* @version 1.0
* @author: wjq
* @description
* @date 2022/5/30 12:51
*/
public class ExcelToXmlList {
public static void main(String[] args) throws FileNotFoundException {
InputStream inp = new FileInputStream(new File("D:\\CRM-中英文-partygroup.xlsx"));
List<Map<String, String>> list = readExcel(inp);
}
/**
* 读取Excel文件的内容
*
* @param inputStream excel文件,以InputStream的形式传入
* @return 以List返回excel中内容
*/
public static List<Map<String, String>> readExcel(InputStream inputStream) {
//定义工作簿
XSSFWorkbook xssfWorkbook = null;
try {
xssfWorkbook = new XSSFWorkbook(inputStream);
} catch (Exception e) {
System.out.println("Excel data file cannot be found!");
}
int numberOfSheets = xssfWorkbook.getNumberOfSheets();
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
for (int i = 0; i < numberOfSheets; i++) {
List<Map<String, String>> sheetList = new ArrayList<Map<String, String>>();
XSSFSheet sheetAt = xssfWorkbook.getSheetAt(i);
//定义工作表
String sheetName = xssfWorkbook.getSheetName(i);
int maxRow = sheetAt.getLastRowNum();
//默认第一行为标题行,index = 0
XSSFRow titleRow = sheetAt.getRow(0);
for (int row = 1; row <= maxRow; row++) {
XSSFRow xss = sheetAt.getRow(row);
if (xss != null) {
int maxRol = sheetAt.getRow(row).getLastCellNum();
Map<String, String> map = new LinkedHashMap<String, String>();
for (int rol = 1; rol < maxRol; rol++) {
XSSFCell cell = sheetAt.getRow(row).getCell(rol);
if (UtilValidate.isNotEmpty(cell)) {
cell.setCellType(CellType.STRING);
//System.out.print(cell.getStringCellValue());
if (UtilValidate.isNotEmpty(titleRow.getCell(rol))) {
map.put(titleRow.getCell(rol).getStringCellValue(), cell.getStringCellValue());
}
}
}
sheetList.add(map);
}
}
StringBuffer xmlDetails = new StringBuffer();
xmlDetails.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
xmlDetails.append("<resource xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"https://ofbiz.apache.org/dtds/ofbiz-properties.xsd\">\n");
for (Map<String, String> map : sheetList) {
if (UtilValidate.isNotEmpty(map.get("KEY"))) {
xmlDetails.append(" <property key=\"").append(map.get("KEY").replace(" ","")).append("\">\n");
} else if (UtilValidate.isNotEmpty(map.get("EN"))) {
xmlDetails.append(" <property key=\"").append(map.get("EN").replace(" ","")).append("\">\n");
} else {
xmlDetails.append(" <property key=\"").append(map.get("KEY")).append("\">\n");
}
xmlDetails.append(" <value xml:lang=\"zh\">").append(map.get("ZH")).append("</value>\n");
xmlDetails.append(" <value xml:lang=\"en\">").append(map.get("EN")).append("</value>\n");
xmlDetails.append(" <value xml:lang=\"ja\">").append(map.get("JA")).append("</value>\n");
xmlDetails.append(" </property>\n");
}
xmlDetails.append("</resource>\n");
try {
// 生成xml文件
File file = new File("E:\\workspace\\svn\\scsk_pj\\SccmPlatform\\04Code\\crm\\trunk\\plugins\\crm\\config\\CrmUitLabels-" + sheetName + ".xml");
if (!file.exists()) {
file.createNewFile();
}
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter(new FileOutputStream(file), format);
// 设置是否转义,默认使用转义字符
writer.setEscapeText(false);
writer.write(xmlDetails.toString());
writer.close();
System.out.println("CrmUitLabels-" + sheetName + ".xml成功");
} catch (Exception e) {
Debug.logError(e, "CrmUitLabels-" + sheetName + ".xml失败");
System.out.println("CrmUitLabels-" + sheetName + ".xml失败");
}
}
return list;
}
}