JSON 导入到 Excel

2024-02-19

是否可以在宏中编写 JSON 调用脚本?

我想通过 API 连接获取 JSON 字符串。看起来问题是 Excel 期望参数在 HTML 字符串中传递,但 JSON 在 HTML 正文中传递参数。有任何想法吗?


由于这是VBA,我会使用COM来调用xmlhttprequest但以同步方式使用它,以免扰乱 VBA 的单线程执行环境,示例类说明了post and get请求方式如下:

'BEGIN CLASS syncWebRequest

Private Const REQUEST_COMPLETE = 4

Private m_xmlhttp As Object
Private m_response As String

Private Sub Class_Initialize()
    Set m_xmlhttp = CreateObject("Microsoft.XMLHTTP")
End Sub

Private Sub Class_Terminate()
    Set m_xmlhttp = Nothing
End Sub


Property Get Response() As String
    Response = m_response
End Property

Property Get Status() As Long
    Status = m_xmlhttp.Status
End Property

Public Sub AjaxPost(Url As String, Optional postData As String = "")
    m_xmlhttp.Open "POST", Url, False
    m_xmlhttp.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
    m_xmlhttp.setRequestHeader "Content-length", Len(postData)
    m_xmlhttp.setRequestHeader "Connection", "close"
    m_xmlhttp.send (postData)
    If m_xmlhttp.readyState = REQUEST_COMPLETE Then
        m_response = m_xmlhttp.responseText
    End If
End Sub

Public Sub AjaxGet(Url As String)
    m_xmlhttp.Open "GET", Url, False
    m_xmlhttp.setRequestHeader "Connection", "close"
    m_xmlhttp.send
    If m_xmlhttp.readyState = REQUEST_COMPLETE Then
        m_response = m_xmlhttp.responseText
    End If
End Sub

'END CLASS syncWebRequest   

现在你可以调用上面的代码来返回服务器的响应:

Dim request As New syncWebRequest
request.ajaxGet "http://localhost/ClientDB/AllClients?format=json" 
Dim json as string 
json = request.Response

这里的问题是我们希望能够以某种方式读取从服务器返回的数据,而不是直接操作 JSON 字符串。对我有用的是使用VBA-JSON http://code.google.com/p/vba-json/(谷歌代码导出here https://github.com/orialmog/vba-json/) 通讯类型Collection处理 JSON 数组和Dictionary使用解析器工厂方法处理成员及其声明Parse这基本上使得创建这些字典集合变得更加简单。

现在我们可以解析 JSON:

[{"Name":"test name","Surname":"test surname","Address":{"Street":"test street","Suburb":"test suburb","City":"test city"}}]

变成类似下面的内容:

Set clients = parser.parse(request.Response)
For Each client In clients
    name = client("Name")
    surname = client("Surname")
    street = client("Address")("Street")
    suburb = client("Address")("Suburb")
    city = client("Address")("City")
Next

这很好,但是像能够编辑和回发数据之类的东西呢?嗯,还有一个方法toString从上面的 [Collection/Dictionary] JSON 数据创建一个 JSON 字符串,假设服务器接受 JSON 返回。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSON 导入到 Excel 的相关文章

随机推荐

  • 为什么 javascript 不在加载 Ext.Ajax.Request 的 .php 文件中执行?

    我想通过 ajax 加载 php 文件 该文件在加载时执行 ExtJS 脚本 从而修改 DOM 中已存在的现有 ExtJS 对象 但是 我什至无法从正在加载的页面执行 JavascriptExt Ajax request Firebug N
  • 如何通过代码编程获取设备的 IMEI/ESN 号码但在 android > 6 中

    我的安卓版本是棉花糖6 0 如何以编程方式在 android gt 6 中查找 获取 imei 号码 注意 我在 AndroidManifest xml 文件中添加了 READ PHONE STATE 权限
  • Laravel - 会话返回 null

    我第一次在 Laravel 中使用会话 并且尝试执行多步骤形式 所以我认为使用会话将是一个明智之举 但是下面的代码返回一个空值 我做错了什么 user information name gt request gt name email gt
  • 扩展 CodeIgniter 中的控制器类

    I have class MY Controller extends CI Controller和大配置文件部分的通用逻辑 所以我尝试创建class Profile extends MY Controller正如我所理解的那样 配置文件部分
  • 如何使用自定义元素将子自定义元素包装到 div 中

    我正在尝试创建一个包装器自定义元素 将其子自定义元素包装到 div 中 但子元素没有被包装 相反 一个空的 div 被插入到子元素之前的包装元素中
  • 如何对私有变量进行单元测试?

    考虑一个链表类 我维护 2 个私有变量 1 firstNode 和 2 lastNode 因此 这些变量仅供内部使用 不通过 getter 公开 我想测试操作是否按预期修改这两个变量 例如 如果最后一个节点是重复的 则消除排序链表中的重复应
  • Blade 文件中的 if else 条件(laravel 5.3)

    我想检查一下if else我的刀片文件中的状况 我想检查一下情况 user gt status waiting 如下面给出的代码 输出按我的预期正确返回 但随着我的输出 我发现打印了大括号 我想删除结果中的大括号 我的有什么问题吗if健康
  • 计时器每 5 分钟运行一次

    如何每 5 分钟运行一些函数 示例 我想跑步sendRequest 仅在 14 00 14 05 14 10 等时间 我想用 C 以编程方式完成它 该应用程序是 Windows 服务 Use System Threading Timer h
  • Mockito:模拟对象,不是成员,但内联创建

    我有一个类执行以下操作 public class Transformer public void transform final Car car throws IOException switch car getType case OFFR
  • 如何以 vmware 清晰度动态切换主题

    Vmware Clarity 0 10 16 刚刚发布了新的深色主题 这很棒 他们描述了如何添加新主题 但没有描述在页面内动态更改它的可能性 是因为不可行吗 如果是的话 我该如何使用 Angular 4 来做到这一点 有什么网站可以帮助我解
  • 在 Debezium Mysql Connector 中将更多表列入白名单的有效方法

    将新表列入 debezium mysql 连接器白名单是否遵循任何最佳实践 我们在 CDC 流程中使用 debezium mysql 连接器 并且出现了一个用例 将更多表列入连接器配置的白名单 以下是正在使用的 Debezium 的版本详细
  • RoR,无法从 DateTime/TimeWithZone 迭代

    我有一个简单的任务 我想获取开始日期和结束日期并循环天 日期 这段代码正在我的 db seed rake 任务中使用 目前 我的代码已经经历了以下尝试 someModel start date to datetime someModel e
  • 使用confirm()作为if的条件?

    我有这个功能 function RemoveProduct if confirm Poista return true return true else return false 当您单击页面上的 删除 按钮时 它应该询问是否应该删除产品
  • HTML SRC 属性 - 使用 html 代码而不是 URL

    有没有办法使用纯 html 代码在框架内显示 而不必链接到特定的 URL 文件 例如 不是这样的 但就像这样 也许您可以将 HTML 注入 iFrame Frame 中 如本文所述 将 HTML 注入 IFrame http softwar
  • 如果兄弟节点具有特定值,如何使用 XPath 选择节点?

    我有以下文件 a a
  • 执行控制台命令并获取其输出

    我想知道 在 Visual Basic 2008 中 如何执行外部控制台 命令行 命令并在没有中间文件的帮助下获取其输出 以加快速度 看一下ProcessStartInfo RedirectStandardOutput http msdn
  • Android KeyStore - 密钥并不总是持久存在

    在我的应用程序中 我们使用 RSA 密钥 该密钥是应用程序在第一次启动时生成的 使用 Android 密钥存储 由于未知原因 应用程序无法从某些设备上的密钥存储中检索密钥 我检查了日志 但找不到此错误与特定操作系统版本或特定设备型号之间的关
  • 有谁知道 pymongo 中 2dsphere 索引的工作示例吗?

    我正在尝试编写一个脚本来执行此处提到的基本 2dsphere 索引操作2dsphere http docs mongodb org manual core 2dsphere 使用 pymongo 我找不到任何例子来弄清楚 这是我迄今为止的尝
  • OleDbDataAdapter Fill 和 OleDbDataReader 需要 3-5 分钟来填充

    这是一个非常奇怪的问题 因为它只发生在随机的全新 Windows 10 电脑上 填充数据适配器或数据读取器需要 1 5 分钟 这是从 Windows 7 旧电脑升级到全新 Windows 10 电脑时发生的第三台电脑 第一次出现是在一年前
  • JSON 导入到 Excel

    是否可以在宏中编写 JSON 调用脚本 我想通过 API 连接获取 JSON 字符串 看起来问题是 Excel 期望参数在 HTML 字符串中传递 但 JSON 在 HTML 正文中传递参数 有任何想法吗 由于这是VBA 我会使用COM来调