SVN记录转excel文件的小程序
来源:互联网 发布:房屋交易数据 编辑:程序博客网 时间:2024/05/16 01:49
用于将SVN记录转成excel文件的小程序,程序包见附件。
可执行文件打包下下载地址:http://download.csdn.net/detail/setsail_wu/5144664
源码项目:https://bitbucket.org/tonywut/svnlog2excel/overview
使用方法如下:
1、 将压缩包里的文件解压至linux服务器任意目录下。
2、 在该目录下执行 ./svnlog2excel.shSVNPATH如
3、 即会在当前目录下生成一excel文件,文件名与SVN路径有关,如下:
源码如下
SvnLog.java,用于保存每条记录的信息。
package com.tony;public class SvnLog {private String revision = "";private String author = "";private String date = "";private String paths = "";private String msg = "";public SvnLog(){}public void setRevision(String s){this.revision = s;}public String getRevision(){return this.revision;}public void setAuthor(String s){this.author = s;}public String getAuthor(){return this.author;}public void setDate(String s){this.date = s;}public String getDate(){return this.date;}public void setPaths(String s){this.paths = s;}public String getPaths(){return this.paths;}public void setMsg(String s){this.msg = s;}public String getMsg(){return this.msg;}}
svnlogXMLHandler.java ,解析XML文件。
package com.tony;import java.util.ArrayList;import java.util.List;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;public class svnlogXMLHandler extends DefaultHandler {private List<SvnLog> svnlogs;private SvnLog svnlog; private String whichElement; private String paths = ""; private int pathNum = 0; public final static String LOGENTRY = "logentry";public final static String REVISION = "revision";public final static String AUTHOR = "author";public final static String DATE = "date";public final static String PATHS = "paths";public final static String PATH = "path";public final static String ACTION = "action";public final static String MSG = "msg";public List<SvnLog> getSvnLogs(){return svnlogs;}@Override public void startDocument() throws SAXException { svnlogs = new ArrayList<SvnLog>();}@Override public void characters(char[] ch, int start, int length) {if(whichElement!=null){String valueString = new String(ch, start, length);if(AUTHOR.equals(whichElement)){svnlog.setAuthor(valueString);}else if(DATE.equals(whichElement)){svnlog.setDate(valueString);}else if(PATH.equals(whichElement)){paths = paths + valueString ;}else if(MSG.equals(whichElement)){svnlog.setMsg(valueString);}}}@Override public void startElement (String uri, String localName, String name, Attributes attributes) throws SAXException { if(LOGENTRY.equals(name)) {svnlog = new SvnLog();svnlog.setRevision(new String(attributes.getValue(REVISION)));}else if(PATH.equals(name)) { paths = paths + (pathNum != 0? System.getProperty("line.separator"):"") + (new String(attributes.getValue(ACTION))) + " ";pathNum ++ ;}else if(PATHS.equals(name)){pathNum = 0;}whichElement = name;}@Override public void endElement(String uri, String localName, String name)throws SAXException {if(LOGENTRY.equals(name) ) {svnlogs.add(svnlog);svnlog = null;} else if (PATHS.equals(name)) {svnlog.setPaths(paths);paths = "";}whichElement = null;}@Override public void endDocument () {}}
toExcel.java ,用于生成excel文件。
package com.tony;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.List;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import jxl.Workbook;import jxl.write.Label;import jxl.write.WritableCellFormat;import jxl.write.WritableFont;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;import jxl.write.biff.RowsExceededException;public class toExcel {public static List<SvnLog> getSvnLogs(String filename) throws Exception {InputStream inStream = new FileInputStream(new File(filename)); SAXParserFactory spf = SAXParserFactory.newInstance(); // 初始化sax解析器 SAXParser sp = spf.newSAXParser(); // 创建sax解析器 svnlogXMLHandler handler = new svnlogXMLHandler(); sp.parse(inStream, handler); return handler.getSvnLogs(); } /** * @param args */ public static void main(String[] args) { if(args.length != 2) { System.out.println("Please input src file(***.xml) and target file(***.xls)"); System.out.println("ex: java -jar svnlog2excel.jar changlog.xml test2.xls"); return; } String targetFile = args[1]; String srcFile = args[0]; File file = new File(targetFile); Label label; try { List<SvnLog> svnlogs = getSvnLogs(srcFile); WritableWorkbook workbook = Workbook.createWorkbook(file); WritableSheet sheet = workbook.createSheet("test1", 0); WritableFont wtf = new WritableFont(WritableFont.createFont("宋体"),14,WritableFont.BOLD,false); WritableCellFormat wcfmt = new WritableCellFormat(wtf); wcfmt.setAlignment(jxl.format.Alignment.CENTRE); int c= 0; sheet.setColumnView(c, 14); label = new Label(c++, 0, svnlogXMLHandler.REVISION, wcfmt); sheet.addCell(label); sheet.setColumnView(c, 14); label = new Label(c++, 0, svnlogXMLHandler.AUTHOR, wcfmt); sheet.addCell(label); sheet.setColumnView(c, 11); label = new Label(c++, 0, svnlogXMLHandler.DATE, wcfmt); sheet.addCell(label); sheet.setColumnView(c, 40); label = new Label(c++, 0, svnlogXMLHandler.MSG, wcfmt); sheet.addCell(label); sheet.setColumnView(c, 100); label = new Label(c++, 0, svnlogXMLHandler.PATHS, wcfmt); sheet.addCell(label); WritableFont wtf2 = new WritableFont(WritableFont.createFont("Arial"),10,WritableFont.NO_BOLD,false); WritableCellFormat wcfmt2 = new WritableCellFormat(wtf2); wcfmt2.setVerticalAlignment(jxl.format.VerticalAlignment.TOP); WritableCellFormat wcfmt3 = new WritableCellFormat(wtf2); wcfmt3.setVerticalAlignment(jxl.format.VerticalAlignment.TOP); wcfmt3.setAlignment(jxl.format.Alignment.CENTRE); for (int i=0; i<svnlogs.size(); i++){ int j = 0; label = new Label(j++, i+1, svnlogs.get(i).getRevision(), wcfmt3); sheet.addCell(label); label = new Label(j++, i+1, svnlogs.get(i).getAuthor(), wcfmt2); sheet.addCell(label); label = new Label(j++, i+1, svnlogs.get(i).getDate(), wcfmt2); sheet.addCell(label); label = new Label(j++, i+1, svnlogs.get(i).getMsg(), wcfmt2); sheet.addCell(label); label = new Label(j++, i+1, svnlogs.get(i).getPaths(), wcfmt2); sheet.addCell(label); } workbook.write(); workbook.close(); } catch (IOException e) { e.printStackTrace(); } catch (RowsExceededException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); } catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} }}
- SVN记录转excel文件的小程序
- SVN记录转excel文件的小程序(windows版本)
- 一个根据.BOM文件自动创建Excel BOM的程序---记录在此,以便查询
- SVN如何查看修改的文件记录
- SVN如何查看修改的文件记录
- VB txt 转换 excel 的小程序
- 记录文件下电子书籍是否已读过的Python小程序(源码)
- 几个c 的小程序记录
- android 配置 小乌龟SVN SVN需要忽略的文件
- 初学Python写的小程序,记录记录!
- Java小程序-记录
- 小程序学习记录
- 记录一个Excel去掉网格线的小内容备用
- 第一次替换svn文件记录
- 工作记录之SVN删除错误文件的办法
- SAP 解除导出Excel 为默认方式的小程序
- EXCEL实现简易的贪吃蛇小程序
- Java 读写Excel小程序
- CxImage的Alpha透明度设置:SetCxImageAlpha(CxImage &img, BYTE bAlpha)
- 取文件目录的最后一个文件名
- Oracle创建自增字段sequence
- ubuntu卸载多余的内核
- android中push机制实现:搭建XMPP协议,实现自主推送消息到手机
- SVN记录转excel文件的小程序
- android Notification 的使用
- mysql 字段boolean 及不允许重复插入记录
- Windows下FFmpeg-full-SDK-3.2开发环境搭建
- NSArray 倒序 输出
- SQL还原数据库
- PC端通过USB连接手机,检测手机端是否安装某个应用程序
- 详解IOS开发应用之并发Dispatch Queues
- 失败的玩具