如何解决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 举报,一经查实,本站将立刻删除。