如何将EXCEL中的XLS文件导出成XML文件 遇到个炽手的问题,如题。分解下这个问题,也就2个小问题:1.如何通过JAVA读取EXCEL文件。2.如何导出成XML文件。第二个问题我还是做得来的,就第一个问题成了真正的问题了。请各位不吝赐教,谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 解析 表格有现成的api,推荐使用jxl包 在网上下个 jxl的包 和相关的APIhttp://zhidao.baidu.com/question/114927870.html?si=3 1.如何通过JAVA读取EXCEL文件。 流方式读取(不知行否?)2.如何导出成XML文件。 流方式写时候,拼成Xml格式字符串,再写入XML文件 转:import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Date; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFDataFormat; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import com.fsti.eoms.util.DateUtil; public class ExcelReader { public static void main(String[] arg) { ExcelReader er = new ExcelReader(); try { HashMap map = er.readExcel("c:/Sheet.xls"); System.out.println(map.isEmpty()); for(int i = 0; i < map.keySet().size(); i++) { LinkedList list = (LinkedList)map.get(new Integer(i+1)); Iterator it = list.iterator(); while(it.hasNext()) { System.out.print(it.next()+"\t"); } System.out.print("\n"); System.out.print("a"); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.print("a"); } /** * 读EXCEL文件 * @param path * @return */ public HashMap readExcel(String path) { HashMap map= null; try { HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(path)); //表单 for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) { if (null != workbook.getSheetAt(numSheets)) { HSSFSheet aSheet = workbook.getSheetAt(numSheets);// 获得一个sheet //行 map = new HashMap(); for (int rowNumOfSheet = 1; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++) { if (null != aSheet.getRow(rowNumOfSheet)) { HSSFRow aRow = aSheet.getRow(rowNumOfSheet); LinkedList al = new LinkedList(); //列 for (short cellNumOfRow = 1; cellNumOfRow <= aRow.getLastCellNum(); cellNumOfRow++) { String strCell = ""; Object a = aRow.getCell(cellNumOfRow); if (null != aRow.getCell(cellNumOfRow) ) { HSSFCell aCell = aRow.getCell(cellNumOfRow); if(aCell.getCellType() == (aCell.CELL_TYPE_NUMERIC)) { strCell =String.valueOf(aCell.getNumericCellValue()); int index = strCell.indexOf("."); if(index != -1) { strCell = strCell.substring(0,index); } if(HSSFDateUtil.isCellDateFormatted(aCell)) { strCell = DateUtil.convertDateToString("yyyy-MM-dd HH:mm:ss",aCell.getDateCellValue()); } } else { strCell = aCell.getStringCellValue(); } al.add(cellNumOfRow-1, strCell); } } map.put(new Integer(rowNumOfSheet), al);//添加一行数据 } } } } } catch (Exception e) { System.out.println("-------------ReadExcelError------------------" + e.getMessage()); e.printStackTrace(); } return map; } } 读取之后,遍历map数据,写入一个XML文件就行了 第一个问题:读取Excel,可以使用第三方包POI,提供了读取和写入Excel文件的功能。第二个问题,写xml,可以使用DOM。其实对于xml操作,使用groovy会更加简洁和方便 这个问题还是比较麻烦的,它涉及到上传,解析execle,然后再把数据生成xml文件我以前做过的 谢谢 各位,已经搞 定了.昨天也发现个很有用的开源网站 大家也可以看下.http://www.open-open.com/ 默认构造函数和无参构造函数的一个问题 Java核心技术面试题.目前没见过能回答对超过50% JComboBox的内容怎么打出来了两次? JMS: 如何删除注销服务器上的Topic 关于线程同步的线程调度问题 为何无法用ResultSet更新数据库记录? 有没有自动写getXXX和setXXX的JB插件?谢谢 applet中怎样使用swing? help!! 帮忙看个程序,运行后报:java.lang.NullPointerException...... 求MAC算法实现 用JNI机制调用DLL,参数名字要完全一样吗?
http://zhidao.baidu.com/question/114927870.html?si=3
流方式读取(不知行否?)
2.如何导出成XML文件。
流方式写时候,拼成Xml格式字符串,再写入XML文件
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import com.fsti.eoms.util.DateUtil;
public class ExcelReader {
public static void main(String[] arg) {
ExcelReader er = new ExcelReader();
try {
HashMap map = er.readExcel("c:/Sheet.xls");
System.out.println(map.isEmpty());
for(int i = 0; i < map.keySet().size(); i++) {
LinkedList list = (LinkedList)map.get(new Integer(i+1));
Iterator it = list.iterator();
while(it.hasNext()) {
System.out.print(it.next()+"\t");
}
System.out.print("\n");
System.out.print("a");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.print("a");
}
/**
* 读EXCEL文件
* @param path
* @return
*/
public HashMap readExcel(String path) {
HashMap map= null;
try {
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(path));
//表单
for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) {
if (null != workbook.getSheetAt(numSheets)) {
HSSFSheet aSheet = workbook.getSheetAt(numSheets);// 获得一个sheet
//行
map = new HashMap();
for (int rowNumOfSheet = 1; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++) {
if (null != aSheet.getRow(rowNumOfSheet)) {
HSSFRow aRow = aSheet.getRow(rowNumOfSheet);
LinkedList al = new LinkedList();
//列
for (short cellNumOfRow = 1; cellNumOfRow <= aRow.getLastCellNum(); cellNumOfRow++) {
String strCell = "";
Object a = aRow.getCell(cellNumOfRow);
if (null != aRow.getCell(cellNumOfRow) ) {
HSSFCell aCell = aRow.getCell(cellNumOfRow);
if(aCell.getCellType() == (aCell.CELL_TYPE_NUMERIC)) {
strCell =String.valueOf(aCell.getNumericCellValue());
int index = strCell.indexOf(".");
if(index != -1) {
strCell = strCell.substring(0,index);
}
if(HSSFDateUtil.isCellDateFormatted(aCell)) {
strCell = DateUtil.convertDateToString("yyyy-MM-dd HH:mm:ss",aCell.getDateCellValue());
}
} else {
strCell = aCell.getStringCellValue();
}
al.add(cellNumOfRow-1, strCell);
}
}
map.put(new Integer(rowNumOfSheet), al);//添加一行数据
}
}
}
}
} catch (Exception e) {
System.out.println("-------------ReadExcelError------------------" + e.getMessage());
e.printStackTrace();
}
return map;
}
} 读取之后,遍历map数据,写入一个XML文件就行了
第二个问题,写xml,可以使用DOM。其实对于xml操作,使用groovy会更加简洁和方便
我以前做过的
昨天也发现个很有用的开源网站 大家也可以看下.
http://www.open-open.com/