`

git.oschina的issues导出为excel

阅读更多

用git.oschina.net 作为团队的代码仓库服务一年多,总体来说还是比较稳定的。

小团队开发为了简便快捷,在测试阶段直接用git.oschina的issues管理。

基本上对于小团队而言足够了,可以代替jira这样的专业工具。

 

但是在项目结题验收时遇到个小问题:验收文档中需要提供测试用例,之前用jira管理可以方便地导出excel或其他可阅读离线文档。git.oschina的issues管理缺少相应的功能。

 

经咨询git.oschina运维人员,获知可以拿到atom规范的feed。但只能分页获取,手工操作仍然麻烦,所以写了个java小工具类,用于分页抓取git.oschina的issues,并生成excel文档。

 

抓取使用了Rome库,生成excel使用了poi库。

工具类如下:

 

package cm.util;

import java.io.File;
import java.io.FileOutputStream;
import java.net.URL;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.CreationHelper;

import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.io.SyndFeedInput;
import com.sun.syndication.io.XmlReader;


public class GitFeed {
/**
 * 	
 * @param fpath 导出的excel路径
 * @param git_url git.oschina.net 上的issues访问路径,注意项目应设置为开放访问
 * @param page 抓取issues总页数
 * @throws Exception
 */
	public static void toExcel(String fpath, String git_url, int page) throws Exception{
		File resultFile = new File(fpath);
		HSSFWorkbook wb =new HSSFWorkbook(); 
		HSSFSheet sheet = wb.createSheet("Sheet1");  
		HSSFRow row;
		int row_pos=0;
		CellStyle cellStyle = wb.createCellStyle();
		CreationHelper createHelper = wb.getCreationHelper();
		cellStyle.setDataFormat(
		    createHelper.createDataFormat().getFormat("m/d/yy h:mm"));
		
		for(int i=1; i<page+1; i++){
			String rss = git_url;
			if(page>1)
				rss+="&page="+i;
            URL url = new URL(rss);
            // 读取Rss源   
            XmlReader reader = new XmlReader(url);
            
            System.out.println("Rss源的编码格式为:" + reader.getEncoding());
            SyndFeedInput input = new SyndFeedInput();
            // 得到SyndFeed对象,即得到Rss源里的所有信息   
            SyndFeed feed = input.build(reader);
            //System.out.println(feed);
            // 得到Rss新闻中子项列表   
            List entries = feed.getEntries();
            // 循环得到每个子项信息   
			
            for (int j = 0; j < entries.size(); j++) {
    			row = sheet.createRow(row_pos++);
    			int cell_pos=0;

                SyndEntry entry = (SyndEntry) entries.get(j);
                // 标题、连接地址、标题简介、时间是一个Rss源项最基本的组成部分   
				HSSFCell cell = row.createCell(cell_pos++);  
				cell.setCellValue(entry.getTitle());  
                System.out.println("标题:" + entry.getTitle());
                
                cell = row.createCell(cell_pos++);  
				cell.setCellValue(entry.getLink());  
                System.out.println("连接地址:" + entry.getLink());
                
/*                SyndContent description = entry.getDescription();
                cell = row.createCell(cell_pos++);  
				cell.setCellValue(description.getValue());                 
                System.out.println("标题简介:" + description.getValue());
*/                
                
                cell = row.createCell(cell_pos++);  
                cell.setCellStyle(cellStyle);
				cell.setCellValue( entry.getUpdatedDate());                 
                System.out.println("发布时间:" + entry.getUpdatedDate());
                
                
                // 以下是Rss源可先的几个部分   
                cell = row.createCell(cell_pos++);  
				cell.setCellValue( entry.getAuthor());                 
                System.out.println("标题的作者:" + entry.getAuthor());
            }
		}			
			
		FileOutputStream fos = new FileOutputStream(resultFile);  
        // save workbook  
        wb.write(fos);  
        fos.flush();  
        fos.close();  
        wb.close();
	} 
	
	public static void main(String[] args) throws Exception {
		GitFeed.toExcel("/Users/c4w/git/azutil/azutil/resource/cl.xls",
				"https://git.oschina.net/chengxj/cl/issues.atom?assignee_id=&issue_search=&label_name=&milestone_id=&scope=&sort=&status=all",
				21);
	}

}

 

 

0
1
分享到:
评论

相关推荐

    Bonobo.Git.Server

    Bonobo.Git.Server是一款开源的应用程序,专为Windows环境设计,用以搭建和管理本地Git服务器。它提供了直观的Web界面,使得团队协作和代码版本控制变得轻而易举。在本篇文章中,我们将深入探讨Bonobo.Git.Server的...

    net-tools-2.0-0.25.20131004git.el7.x86_64.rpm

    用户Linux系统的net-tools-2.0-0.25.20131004git.el7.x86_64.rpm文件

    aixtools.git.2.10.1.bundle.tar.bz2

    aix7.2系统下安装git客户端

    net-tools-2.0-0.24.20131004git.el7.x86_64.rpm.zip

    ifconfig命令找不到

    git.zip配置

    `git.zip`配置可能指的是在使用Git时,对特定的ZIP文件进行操作或者管理的设置。以下将详细阐述Git的相关知识点,以及如何处理与ZIP文件相关的操作。 1. Git基本概念: - Git仓库:存储项目所有版本信息的地方,...

    linux-2.6-git.7z.002

    从http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git下载

    mingw-17.1-without-git.exe

    mingw-17.1-without-git.exe

    git.ppt演示文稿

    git.ppt演示文稿,git.ppt演示文稿,git.ppt演示文稿,git.ppt演示文稿

    deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm

    deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm

    ffmpeg-snapshot-git.tar.bz2 源码

    ffmpeg-snapshot-git.tar.bz2

    linux-2.6-git.7z.007

    从http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git下载

    keil 下的GIT.SVCS

    懂的都懂,无需描述

    使用tortoisegit访问git@oschina.docx

    接着,登录到Git@OSC网站,转到http://git.oschina.net/keys/new页面,上传刚刚生成的公钥,这样你就完成了在Git@OSC的身份验证设置。 在Git@OSC上创建一个新的项目,复制项目的SSH克隆地址。在你的本地计算机上...

    从git.ti.com官方下载的BLE4.0 SensorTag. Andriod应用源代码

    从git.ti.com官方下载的BLE4.0 Andriod应用源代码 目前仅仅支持Sensor Tag演示设备,搜索不到Keyfob设备。 可修改一下的BLE-Stack的源代码,将Sensor Tag中I2C设备的驱动修改为Keyfob设备的驱动,就可以识别Keyfob了...

    Git-2.30.2-32-bit.exe.zip(免积分)

    Git-2.30.2-32-bit.exe.zip(免积分)Git-2.30.2-32-bit.exe.zip(免积分)Git-2.30.2-32-bit.exe.zip(免积分)Git-2.30.2-32-bit.exe.zip(免积分)Git-2.30.2-32-bit.exe.zip(免积分)Git-2.30.2-32-bit.exe.zip...

    Git.Mastering.Version.Control.pdf

    As you progress on to the next module, you will learn how you can automate the usual Git processes by utilizing the hook system built into Git. It also covers advanced repository management, including...

    Jenkins git.hpi

    首先,`git.hpi`是Jenkins的一个插件文件,扩展名为`.hpi`,代表Hudson Plugin Archive,是Jenkins插件的二进制格式。这个插件允许Jenkins与Git仓库进行交互,包括但不限于克隆代码、拉取新提交、检测分支变化等操作...

    专业版win10解决git闪退

    原因:重新装了一个win10专业版的系统,导致git.exe闪退 解决:在网上重新下载了一个null.sys,覆盖掉原来的的文件即可,路径:c:/windows/system32/drivers/null.sys 覆盖后,git-bash.exe就不闪退了,但是git....

    SpringBoot+Mysql+MyBatis+Thymeleaf+Amaze UI+ECharts

    [输入图片说明](https://git.oschina.net/uploads/images/2017/0622/011721_cd764a83_125848.jpeg "在这里输入图片标题")![输入图片说明]...

    git.oschina.net:开源中国push 提醒工具 node.js

    【标题】:“git.oschina.net:开源中国push提醒工具 使用node.js” 【正文】: 本文将详细介绍一个基于Node.js编写的开源中国Git仓库push提醒工具。这个工具的主要功能是在检测到有新的push请求到开源中国的Git...

Global site tag (gtag.js) - Google Analytics