记录:Poi处理Excel并保存到TxT
来源:互联网 发布:一洋淘宝助手破解版 编辑:程序博客网 时间:2024/05/22 06:15
场景:
处理公司一个宕机的request_msg.日志
处理思路:
日志是存在excel中
本来想excel中的单元格读取过来转为xml对象,然后取节点里的值,一直没成功,就使用了截取的方式。
使用Poi来读取Excel,并把request中需要的xml节点值截取出来,拼接输出到一个txt中
代码:
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 java.io.*;/** * Created by sun.song on 2016/12/7. */public class TestDai { public static void main(String[] args) throws Exception { FileWriter writer=null; int a =0; //头处理 //String sr[]={"<ns2:uniqueKey>","<ns3:tmId>","<ns3:status>","<ns3:volume>","<ns3:weight>","<ns3:orderId>"}; //String sr2[]={"</ns2:uniqueKey>","</ns3:tmId>","</ns3:status>","</ns3:volume>","</ns3:weight>","</ns3:orderId>"}; //行处理 String sr[]={"<ns3:orderId>","<ns3:orderType>","<ns3:skuId>","<ns3:lineId>","<ns3:linePk>","<ns3:status>","<ns3:quantity>","<ns3:hostState>","<ns3:held>","<ns3:reason>"}; String sr2[]={"</ns3:orderId>","</ns3:orderType>","</ns3:skuId>","</ns3:lineId>","</ns3:linePk>","</ns3:status>","</ns3:quantity>","</ns3:hostState>","</ns3:held>","</ns3:reason>"}; File file = new File("C:\\Users\\sun.song\\Desktop\\ads.xlsx"); FileInputStream inputStream = new FileInputStream(file); XSSFWorkbook xssfWorkbook = new XSSFWorkbook(inputStream); // 循环工作表Sheet for (int numSheet = 0; numSheet < xssfWorkbook.getNumberOfSheets(); numSheet++) { XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet); if (xssfSheet == null) { continue; } // 循环行Row for (int rowNum = 0; rowNum < xssfSheet.getPhysicalNumberOfRows(); rowNum++) { XSSFRow xssfRow = xssfSheet.getRow(rowNum); System.out.println("第"+rowNum+"行"); if (xssfRow == null) { continue; } //循环cell for (int cellNum = 0; cellNum <xssfRow.getPhysicalNumberOfCells() ; cellNum++) { XSSFCell cell = xssfRow.getCell(cellNum); if (cell==null){ continue; } String value = getValue(cell); String handleString = handleString(value, sr, sr2); String s = handleString + "\n"; writer = new FileWriter("d:/3.txt", true); writer.write(s); a++; System.out.println("添加了"+a+"条"); if (writer!=null){ writer.close(); } } } } } /** * * @param v xml格式的String * @param first 起始节点数组 * @param last 结束节点数组 * @return 返回处理过的字符串 */ public static String handleString(String v, String[] first, String[] last) { StringBuffer sb= new StringBuffer(""); for (int i = 0; i < first.length; i++) { String firstString = first[i]; String lastString = last[i]; //System.out.println(firstString); int firstStringLength = firstString.length(); StringBuffer bufferCellValue = new StringBuffer(v); // System.out.println(cellValue); int firstStringIndex = v.indexOf(firstString); //拿出在字符串里不是空的,并截取 if (firstStringIndex>0){ int lastStringIndex = v.indexOf(lastString); StringBuffer subs = new StringBuffer(";"+bufferCellValue.substring(firstStringLength + firstStringIndex, lastStringIndex)); sb.append(subs); }else { StringBuffer sbs = new StringBuffer(";"); sb.append(sbs); } } return sb.toString(); } //根据单元个类型获取单元格 private static String getValue(XSSFCell xssfCell) { if (xssfCell.getCellType() == xssfCell.CELL_TYPE_BOOLEAN) { // 返回布尔类型的值 return String.valueOf(xssfCell.getBooleanCellValue()); } else if (xssfCell.getCellType() == xssfCell.CELL_TYPE_NUMERIC) { // 返回数值类型的值 return String.valueOf(xssfCell.getNumericCellValue()); } else { // 返回字符串类型的值 return String.valueOf(xssfCell.getStringCellValue()); } } /* //格式化XML字符串 public static String formatXml(String str) throws Exception { Document document = null; document = DocumentHelper.parseText(str); // 格式化输出格式 OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("gb2312"); StringWriter writer = new StringWriter(); // 格式化输出流 XMLWriter xmlWriter = new XMLWriter(writer, format); // 将document写入到输出流 xmlWriter.write(document); xmlWriter.close(); return writer.toString(); } public static Document xml2Doc2(String xmlStr){ SAXBuilder builder = new SAXBuilder(); StringReader sr = new StringReader(xmlStr); InputSource is = new InputSource(sr); Document document = null; try { document=builder.build(is); } catch (JDOMException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return document; } */}
1 0
- 记录:Poi处理Excel并保存到TxT
- JAVA-POI导入数据到excel并弹出保存框
- 使用POI读取EXCEL并保存到数据库
- 使用python读取.txt文件并保存到Excel中
- java读取Excel数据,然后写入到txt文件,并批量保存到oracle数据库中
- POI将数据导入Excel,上传到服务器,并从客户端保存
- POI将数据导入Excel,上传到服务器,并从客户端保存
- POI导入Excel并处理数据
- poi 导入Excel封装 并处理数据类型
- matlab读取txt文本内容修改并保存到txt
- java POI 将txt文件导入到excel中
- 利用poi把数据保存excel,并格式化日期实例
- 利用poi把数据保存excel,并格式化日期实例
- JDBC保存EXCEL数据到数据库(3.POI保存Excel数据到数据库)
- java使用poi遍历Excel保存到容器中
- flex 通过as3xls包来实现datagrid输出保存到excel。并处理中文乱码
- 从txt读取信息然后保存到excel中示例
- Aapche POI txt 导入excel
- Android电话拨打流程源码分析
- php网页显示中文乱码的解决办法!
- 如何获取别人APP中的图片资源
- http的一些概念
- JavaScript的原型与继承
- 记录:Poi处理Excel并保存到TxT
- 【JAVA秒会技术之秒杀面试官】JavaEE常见面试题(四)
- Quartz 2D绘图的一般步骤
- solr定时实时重建索引和增量更新
- Ubuntu 16.04 安装使用MySQL以及安装mysql-workbench,ubuntu16.04设置禁止mysql开机自启动
- TextView setText html 字体大小属性无效原因及解决
- HTTP协议的头信息详解
- 【龙印】以程序员的角度整定3d打印机的pid实现控温
- Android入门学习笔记 2016/12/8