SVN记录转excel文件的小程序
2013-03-15 15:23
113 查看
用于将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,用于保存每条记录的信息。
svnlogXMLHandler.java ,解析XML文件。
toExcel.java ,用于生成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 block e.printStackTrace(); } } }
相关文章推荐
- SVN记录转excel文件的小程序(windows版本)
- SVN记录转excel文件的小程序(windows版本)
- Java生成Excel文件通用程序
- SVN更新时,整个项目更新报错,单个文件更新没问题。记录备忘
- 未能加载文件或程序集“ExcelHelper”或它的某一个依赖项。试图加载格式不正确的程序。
- 微信小程序配置文件记录
- excel文件的导入和32位程序在服务器iis上运行
- 记录文件下电子书籍是否已读过的Python小程序(源码)
- SVN操作 -- TortoiseSVN中的Excel文件比较
- Python---购物车更新程序 商品信息存在文件当中,用户购买记录要打印已购商品,余额。卖家可以添加商品,修改价格。
- 分析ngnix日志文件的开发程序记录
- 从EXCEL 导入记录后,如何释放?否则另外打开一个EXCEL文件得重启电脑.
- java 多excel下载 打成zip压缩包 程序中创建文件 响应到浏览器(三)
- JSP读写Excel文件实例程序
- 关于用程序控制Word,Excel等文件的调用,编辑,替换等问题
- Android记录程序崩溃Log写入文件
- SVN本地没有提交却被还原,找回本地的文件记录的方法
- asp.net发布到iis后到处excel程序运行出错,问题解决记录
- log4net示例1-最简单的回滚文件记录日志程序(时间)
- SVN如何查看修改的文件记录] 来源:Linux社区 作者:frogoscar