文档章节

获取报告 Stream转string,利用字符串分割转换成DataTable

深圳大道
 深圳大道
发布于 2016/12/29 15:40
字数 311
阅读 47
收藏 0
protected void Button1_Click(object sender, EventArgs e)
    {
        MemoryStream stream = new MemoryStream();
        StreamReader reader = new StreamReader(stream);

        GetReportRequest request = new GetReportRequest();
        request.ReportId = "24537536063";
        request.Merchant = sellerId;
        request.MWSAuthToken = mwsAuthToken;
        request.Report = stream;
        ltMsg.Text = InvokeGetReport(request);

        string text = reader.ReadToEnd();
        stream.Dispose();
        stream.Close();
        reader.Dispose();
        reader.Close();


        DataTable dt = ConvertReport2DT(text);
        GridView1.DataSource = dt;
        GridView1.DataBind();

        //Response.Write(text);
    }

    public static string InvokeGetReport(GetReportRequest request)
    {
        StringBuilder builder = new StringBuilder();
        try
        {
            MarketplaceWebService.MarketplaceWebServiceConfig config = new MarketplaceWebServiceConfig();
            config.ServiceURL = serviceURL;
            MarketplaceWebService.MarketplaceWebService service = new MarketplaceWebServiceClient
                (accessKey, secretKey, appName, appVersion, config);

            GetReportResponse response = service.GetReport(request);

            builder.AppendFormat("Service Response");
            builder.AppendFormat("=============================================================================");

            builder.AppendFormat("        GetReportResponse");
            if (response.IsSetGetReportResult())
            {
                builder.AppendFormat("            GetReportResult");
                GetReportResult getReportResult = response.GetReportResult;
                if (getReportResult.IsSetContentMD5())
                {
                    builder.AppendFormat("                ContentMD5");
                    builder.AppendFormat("                    {0}", getReportResult.ContentMD5);
                }
            }
            if (response.IsSetResponseMetadata())
            {
                builder.AppendFormat("            ResponseMetadata");
                ResponseMetadata responseMetadata = response.ResponseMetadata;
                if (responseMetadata.IsSetRequestId())
                {
                    builder.AppendFormat("                RequestId");
                    builder.AppendFormat("                    {0}", responseMetadata.RequestId);
                }
            }

            builder.AppendFormat("            ResponseHeaderMetadata");
            builder.AppendFormat("                RequestId");
            builder.AppendFormat("                    " + response.ResponseHeaderMetadata.RequestId);
            builder.AppendFormat("                ResponseContext");
            builder.AppendFormat("                    " + response.ResponseHeaderMetadata.ResponseContext);
            builder.AppendFormat("                Timestamp");
            builder.AppendFormat("                    " + response.ResponseHeaderMetadata.Timestamp);

        }
        catch (MarketplaceWebServiceException ex)
        {
            builder.AppendFormat("Caught Exception: " + ex.Message);
            builder.AppendFormat("Response Status Code: " + ex.StatusCode);
            builder.AppendFormat("Error Code: " + ex.ErrorCode);
            builder.AppendFormat("Error Type: " + ex.ErrorType);
            builder.AppendFormat("Request ID: " + ex.RequestId);
            builder.AppendFormat("XML: " + ex.XML);
            builder.AppendFormat("ResponseHeaderMetadata: " + ex.ResponseHeaderMetadata);
        }
        return builder.ToString();
    }

    #region 报告字符串转换成DataTable
    /// <summary>
    /// 报告字符串转换成DataTable
    /// </summary>
    /// <param name="reportMsg">报告字符串</param>
    /// <returns></returns>
    public static DataTable ConvertReport2DT(string reportMsg)
    {
        DataTable dt = new DataTable();
        try
        {
            //\t       \r\n
            if (reportMsg.Contains("\r\n"))
            {
                string[] rows = reportMsg.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
                //第一行表头
                if (rows[0].Contains("\t")) //制表符
                {
                    string[] columns = rows[0].Split('\t');
                    for (int i = 0; i < columns.Length; i++)
                    {
                        if (!dt.Columns.Contains(columns[i]))
                        {
                            dt.Columns.Add(columns[i]);
                        }
                    }
                }
                //第二行开始数据
                for (int i = 1; i < rows.Length; i++)
                {
                    string[] datas = rows[i].Split('\t');
                    DataRow dr = dt.NewRow();
                    for (int j = 0; j < datas.Length; j++)
                    {
                        dr[j] = datas[j];
                    }
                    dt.Rows.Add(dr);
                    dr = null;
                }
            }
        }
        catch { }
        return dt;
    }
    #endregion

本文转载自:http://blog.csdn.net/smartsmile2012/article/details/44536741

深圳大道
粉丝 3
博文 877
码字总数 0
作品 0
深圳
架构师
私信 提问
XML与DataSet的相互转换类

送给大家一个XML与DataSet的相互转换的类: XmlDatasetConvert 该类提供了四种方法: 1、将xml对象内容字符串转换为DataSet 2、将xml文件转换为DataSet 3、将DataSet转换为xml对象字符串 4、将...

晨曦之光
2012/03/09
195
0
string和stringstream用法总结

string和stringstream用法总结 一、string string 是 C++ 提供的字串型態,和 C 的字串相比,除了有不限长度的优点外,还有其他许多方便的功能。要使用 string, 必須先加入这一行: #inclu...

推荐码发放
2018/08/02
0
0
C#.net干货,最全公共帮助类

比较全面的c#帮助类 日常工作总结,加上网上收集,各式各样的几乎都能找到,所有功能性代码都是独立的类,类与类之间没有联系,可以单独引用至项目,分享出来,方便大家,几乎都有注释,喜欢的...

安与生_
2017/10/12
0
0
c#开发大全、系列文章、精品教程

全栈工程师开发手册 (作者:栾鹏) c#系列教程: c#实现ajax通信:向后台发送JSON字符串,接收响应字符串,并转换为对象 c#文件夹常用操作,属性设置,遍历、压缩 c#获取网页源代码的5种方式...

luanpeng825485697
2017/10/03
0
0
DataTable中检索信息 (C#)

C#_从DataTable中检索信息 存在于内存中的虚拟表DataTable,绑定在数据显示控件后,如果想在再检索其中某些信息,可以利用DataTable.Select方法进行检索,避免了重复的读取数据库。Select方法...

CS-CS01
2018/10/18
20
0

没有更多内容

加载失败,请刷新页面

加载更多

32位与64位Linux系统下各类型长度对比

64 位的优点:64 位的应用程序可以直接访问 4EB 的内存和文件大小最大达到4 EB(2 的 63 次幂);可以访问大型数据库。本文介绍的是64位下C语言开发程序注意事项。 1. 32 位和 64 位C数据类型...

mskk
24分钟前
6
0
Vue 实现点击空白处隐藏某节点(三种方式:指令、普通、遮罩)

在项目中往往会有这样的需求: 弹出框(或Popover)在 show 后,点击空白处可以将其 hide。 针对此需求,整理了三种实现方式,大家按实际情况选择。 当然,我们做项目肯定会用到 UI 框架,常...

张兴华ZHero
31分钟前
7
0
SpringBoot激活profiles你知道几种方式?

多环境是最常见的配置隔离方式之一,可以根据不同的运行环境提供不同的配置信息来应对不同的业务场景,在SpringBoot内支持了多种配置隔离的方式,可以激活单个或者多个配置文件。 激活Profi...

恒宇少年
32分钟前
7
0
PDF修改文字的方法有哪些?怎么修改PDF文件中的文字

PDF修改文字一直以来都是一个难以解决的问题,很多的办公族在办公的时候会有修改PDF文件中的文字的需要,可是PDF文件一般是不能进行编辑和修改的,难道就没有什么办法解决这个问题了嘛?不要...

趣味办公社
35分钟前
5
0
企业组织中采用服务网格的挑战

作者:Christian Posta 译者:罗广明 原文:https://blog.christianposta.com/challenges-of-adopting-service-mesh-in-enterprise-organizations/ 编者按 本文作者介绍了企业组织采用服务网...

jimmysong
45分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部