[Route("adm/getInfo")]
[HttpGet]
public string GetInfo()
{
var types = typeof(GCP.Server.WebAPI.Controllers.HomeController).Assembly.GetTypes().Where(m => m.Name.EndsWith("Controller"));
System.Text.StringBuilder sb = new System.Text.StringBuilder(100);
sb.Append("接口").Append(",").Append("类型").Append(",").Append("注释").AppendLine(); using (System.IO.StreamReader sr = new System.IO.StreamReader(@"F:\GCP\SourceCode\GCP\GCP.WebAPI\App_Data\GCP.WebAPI.XML"))
{
System.Xml.XmlDocument xml = new System.Xml.XmlDocument();
xml.Load(@"F:\GCP\SourceCode\GCP\GCP.WebAPI\App_Data\GCP.WebAPI.XML");
var members = xml.LastChild.LastChild.ChildNodes;
//var members = xml.LastChild.ChildNodes;
foreach (var t in types)
{
var routePrefix = t.GetCustomAttributes(false).FirstOrDefault(m => m.ToString().Contains("RoutePrefix")) as RoutePrefixAttribute;
if (routePrefix == null)
{
continue;
}
string prefix = routePrefix.Prefix; var ms = t.GetMethods(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance)
.Where(m => m.GetCustomAttributes(false).Any(n => n.GetType() == typeof(RequestControlAttribute)));
foreach (var m in ms)
{
var requestCtrl = m.GetCustomAttributes(typeof(RequestControlAttribute), false)[0] as RequestControlAttribute;
var routeAttr = m.GetCustomAttributes(typeof(RouteAttribute), false)[0] as RouteAttribute;
Row r = new Row
{
Url = prefix + "/" + routeAttr.Template,
Type = requestCtrl.requestorType.ToString(),
Content = GetContent(members, m)
};
sb.Append(r.Url).Append(",").Append(r.Type).Append(",").Append(r.Content).AppendLine();
}
}
} System.IO.File.WriteAllText("e:/info.csv", sb.ToString(), System.Text.Encoding.UTF8);
return "OK";
} private string GetContent(XmlNodeList members, MethodInfo m)
{
for (int i = 0; i < members.Count; i++)
{
var mem = members[i];
if (mem.Attributes["name"].Value.Contains(m.DeclaringType.ToString() + "." + m.Name))
{
return mem.FirstChild.InnerText.Replace("\r\n", "").Replace(",", "_").Trim();
}
}
return "";
} class Row
{
public string Url { get; set; }
public string Type { get; set; }
public string Content { get; set; }
}

C# 实现Excel读取接口写入数据的更多相关文章

  1. 复制excel表,往excel表中写入数据

    import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import jav ...

  2. Hadoop源代码分析:HDFS读取和写入数据流控制(DataTransferThrottler类别)

    DataTransferThrottler类别Datanode读取和写入数据时控制传输数据速率.这个类是线程安全的,它可以由多个线程共享. 用途是构建DataTransferThrottler对象,并 ...

  3. nodeks —— fs模块 —— 从流中 读取和写入数据

    Fs流读取和写入数据 使用文件流来读取大文件不会卡顿 1, 从流中读取数据 var fs = require("fs"); var data = ''; var count = 0 ...

  4. 用OpenPyXL处理Excel表格 - 向sheet读取、写入数据

    假设一个名叫"模板"的excel表格里有四个sheet,名字分别是['平台', '制冷', '洗衣机', '空调'] 1.读取 from openpyxl import load_ ...

  5. python使用 openpyxl包 excel读取与写入

    '''### 写入操作 ###from openpyxl import Workbook#实例化对象wb=Workbook()#创建表ws1=wb.create_sheet('work',0) #默认 ...

  6. Pandas之Dateframe 实现Excel读取与写入

    目的:有时需对数据进行到出到Excel,直观的给别人参阅,或从Excel中读取数据进行操作和分析依赖库 pandas 可简单的读出和写入 1,根据Excel读取( 需安装xlrd库) import n ...

  7. 使用java进行excel读取和写入

    1:添加处理excel的依赖jar包 <!-- 引入poi,解析workbook视图 --> <dependency> <groupId>org.apache.po ...

  8. C#连接Excel读取与写入数据库SQL ( 上 )

    第一次写C#与sql的东西,主要任务是从Excel读取数据,再存到SQL server中. 先上读取Excel文件的code如下. public bool GetFiles(string equipN ...

  9. 转载-python学习笔记之输入输出功能读取和写入数据

    读取.写入和 Python 在 “探索 Python” 系列以前的文章中,学习了基本的 Python 数据类型和一些容器数据类型,例如tuple.string 和 list.其他文章讨论了 Pytho ...

随机推荐

  1. rpm的参数

      rpm 包的参数如下: -e 卸载rpm包 -q 查询已安装的软件信息 -i 安装rpm包 -u 升级rpm包 --replacepkgs 重新安装rpm包 --justdb 升级数据库,不修改文 ...

  2. C#学习笔记15

    1.平台互操作性和不安全的代码:C#功能强大,但有些时候,它的表现仍然有些“力不从心”,所以我们只能摒弃它所提供的所有安全性,转而退回到内存地址和指针的世界. C#通过3种方式对此提供支持. (1)第 ...

  3. ueditor PHP版本使用方法

    1.ueditor是百度很好用的一款文本编辑器,第一次使用,在此记录使用方法. 2.从http://ueditor.baidu.com/website/download.html#ueditor下载e ...

  4. C++类继承--构造函数时先构造基类

    以下说明继承类函数构造时,先构造基类: 析构基类时,若没加上virtual,只析构基类,不析构派生类: 析构派生类时,同时会析构基类: 1. 基类析构函数有virtual #include <s ...

  5. Android ImageButton单击切换按钮图片效果

    正常状态的效果: 按钮按下的效果图片: 一.在java中为图片按钮增加触摸监听的函数来实现图片切换,代码如下: ImageButton btn = (ImageButton)findViewById( ...

  6. Openstack实践(1)部署使用实例及neutron网络

    版权声明:本文为博主原创文章,欢迎转载,转载请注明作者.原文超链接 ,博主地址:http://www.cnblogs.com/SuperXJ/ 如何快速部署使用openstack,使用kolla吧,o ...

  7. web安全-XSS

    了解XSS的定义 跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻 ...

  8. idea整个项目乱码解决办法

    idea前几天还好好的,这两天一直出现乱码.不止一个文件,是整个项目都有这个问题.想想这几天什么也没做啊... 上网搜了下 解决. 经过多次排查寻找,终于,在项目的目录下有个.idea的文件夹,这个文 ...

  9. js前台检测上传图片大小的总结

    最近一直在做上传图片的前端检测,不通过后台就完成这个动作.但实际是,实际效果差强人意. html5的fileApi出来后,对文件的处理才变得方便了些,对它的简单介绍可以看我的前面的博客.现在支持的浏览 ...

  10. 新款Macbook 安装任意来源软件教程 mac软件下载资源推荐

    防止无良爬虫,开头附上原文链接:http://www.cnblogs.com/xueyudlut/p/7810981.html ------分割线--------------------------- ...