添加 WEBSERVICE 公式获取天气预报数据生成统计表格
本帖最后由 Richard.Ma 于 2021-10-21 18:04 编辑Excel 2013 中引入的 WEBSERVICE 公式可以直接从 Internet 上的 Web 服务中以 XML 格式获取数据。使用 FILTERXML 公式可以解析返回的 XML 字符串。它使用 XPath 表达式从 XML 字符串解析到特定数据信息。
GrapeCity Documents for Excel 库(称为 GcExcel)支持 WEBSERVICE 和 FILTERXML 函数。 在本文中,我们将展示如何在 GcExcel 中使用这些公式来检索天气数据信息并使用 C# 将其保存到 Excel。
步骤 1:设置 C# 项目我们将按照以下步骤创建一个基本的 GcExcel 项目:
[*]在 VS 中,创建一个新的 .NET Core 控制台应用程序
[*]从 NuGet 包管理器安装“GrapeCity.Documents.Excel”包(版本 4.2.0)
[*]使用以下代码创建一个新工作簿并获取工作表:
//Create a new workbook
var workbook = new GrapeCity.Documents.Excel.Workbook();
//Fetch worksheet
IWorksheet ws = workbook.Worksheets;
步骤 2:以 XML 格式获取天气数据可以通过将 URL 传递给 WEBSERVICE 函数以 XML 格式获取来自气象局的天气数据,如下所述:WEBSERVICE:从 Internet 或 Intranet 上的 Web 服务返回数据。以下代码设置了用于获取天气数据的webservice公式单元格ws.Range["H1"].Value = "URL";
ws.Range["I1"].Value = "https://flash.weather.com.cn/wmaps/xml/china.xml";
ws.Range["H2"].Value = "获取的数据 (WEBSERVICE Function)";
ws.Range["I2"].Formula = "WEBSERVICE(I1)";
此公式获取的天气数据xml截图如下
步骤 3:解析天气数据使用 FILTERXML 函数从中提取所需的信息,如下所述:FILTERXML:使用指定的 XPath 从 XML 内容返回特定数据。语法:FILTERXML(xml, xpath)参考下面的代码 ws.Range["B1"].Value = "省份";
ws.Range["C1"].Value = "城市";
ws.Range["D1"].Value = "天气";
ws.Range["E1"].Value = "最高温度";
ws.Range["F1"].Value = "最低温度";
ws.Range["G1"].Value = "风向风速";
ws.Range["A2:A38"].Formula = "ROW(A1)";
ws.Range["B2:B38"].Formula = "FILTERXML($I$2,\"//china/city[\"&$A2&\"]/@quName\")";
ws.Range["C2:C38"].Formula = "FILTERXML($I$2,\"//china/city[\"&$A2&\"]/@cityname\")";
ws.Range["D2:D38"].Formula = "FILTERXML($I$2,\"//china/city[\"&$A2&\"]/@stateDetailed\")";
ws.Range["E2:E38"].Formula = "FILTERXML($I$2,\"//china/city[\"&$A2&\"]/@tem1\")";
ws.Range["F2:F38"].Formula = "FILTERXML($I$2,\"//china/city[\"&$A2&\"]/@tem2\")";
ws.Range["G2:G38"].Formula = "FILTERXML($I$2,\"//china/city[\"&$A2&\"]/@windState\")";
步骤4:优化excel显示的样式,保存excel文件 ws.Range["A:F"].ColumnWidth=10;
ws.Range["G:G"].ColumnWidth = 30;
ws.Range["A1:G38"].Borders.LineStyle = BorderLineStyle.Medium;
ws.Range["A1:G1"].Interior.Color = Color.FromArgb(189, 215, 138);
ws.Range["A1:G1"].Font.Size = 14;
//Save to an Excel file
workbook.Save("webserviceandfilterxml.xlsx");
excel文件最终显示效果,可以完整的显示当天各个城市的各项天气信息,在此基础上也可以做后续操作生成图表
.NET Core项目代码见附件
页:
[1]