微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

QBO ReportService C#输出

如何解决QBO ReportService C#输出

我正在尝试弄清楚如何阅读Quickbooks Online报告服务的结果。具体来说,我试图在标签显示reportBS的结果,这是我的代码

OAuth2RequestValidator oauthValidator = new OAuth2RequestValidator(dictionary["accesstoken"]);
ServiceContext serviceContext = new ServiceContext(dictionary["realmId"],IntuitServicesType.QBO,oauthValidator);
serviceContext.IppConfiguration.BaseUrl.Qbo = "https://sandBox-quickbooks.api.intuit.com/";
serviceContext.IppConfiguration.MinorVersion.Qbo = "55";
ReportService reportService = new ReportService(serviceContext);
reportService.accounting_method = "Accrual";
reportService.start_date = "2020-01-01";
reportService.end_date = "2020-10-31";
reportService.summarize_column_by = "Month";

serviceContext.IppConfiguration.Message.Response.SerializationFormat = Intuit.Ipp.Core.Configuration.SerializationFormat.Json;

ReportService defaultReportService1 = new ReportService(serviceContext);
string defaultReportName = "BalanceSheet";
Report reportBS = defaultReportService1.ExecuteReport(defaultReportName);

运行代码并将reportBS放置在标签上时,得到的结果是Intuit.Ipp.Data.Report,没有其​​他内容

解决方法

您需要将QBO报告另存为JSON或XML字符串吗?据我所知,将QBO报告对象转换为JSON或XML需要手动完成。 Here是一个问题,说明如何通过损益表来完成此操作。 (这实际上与我首先概述的文本提取方法非常相似,在您的情况下只有结果被重新组装为XML / JSON)。

如果您只想将报告传递到另一个系统或存储报告,serialization可以满足要求。


以下this个基本报告示例:

private static void PrintRows(StringBuilder reportText,Row[] rows,int[] maxColumnSize,int level)
{
    for (int rowIndex = 0; rowIndex < rows.Length; rowIndex++)
    {
        Row row = rows[rowIndex];
        //Get Row Header
        Header rowHeader = GetRowProperty(row,ItemsChoiceType1.Header);
        //Append Row Header
        if (rowHeader != null && rowHeader.ColData != null) { PrintColData(reportText,rowHeader.ColData,maxColumnSize,level); }
        //Get Row ColData
        ColData[] colData = GetRowProperty(row,ItemsChoiceType1.ColData);
        //Append ColData
        if (colData != null) { PrintColData(reportText,colData,level); }

        //Get Child Rows
        Rows childRows = GetRowProperty(row,ItemsChoiceType1.Rows);
        //Append Child Rows
        if (childRows != null) { PrintRows(reportText,childRows.Row,level + 1); }
        //Get Row Summary
        Summary rowSummary = GetRowProperty(row,ItemsChoiceType1.Summary);

        //Append Row Summary
        if (rowSummary != null && rowSummary.ColData != null) { PrintColData(reportText,rowSummary.ColData,level); }
    }
}
StringBuilder reportText = new StringBuilder();
//Determine Maxmimum Text Lengths to format Report
//int[] maximumColumnTextSize = GetMaximumColumnTextSize(report);
//Append Column Headers
//PrintColumnData(reportText,report.Columns,maximumColumnTextSize,0);

PrintRows(reportText,report.Rows,1);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?