周一至周五 : 08:30 - 17:30 客服专员电话/微信:17301649370 QQ:2902102332
微信咨询

扫码微信咨询

关注公众号

关注微信公众号

电话: 021 5161 9370
返回顶部
快表数据POST给金蝶云星空示例VBA
显示全部楼层 倒序浏览 发表日期 2026-06-10 13:54:54 18次阅读 0次回复
下面的VBA是将快表中查询到的明细数据通过金蝶云星空API接口发送的示例供参考!


  1. Imports SpreadsheetGear
  2. Imports C1.Silverlight
  3. Imports C1.Silverlight.C1MessageBoxButton
  4. Imports C1.Silverlight.C1MessageBoxIcon
  5. Imports Newtonsoft.Json
  6. Imports Newtonsoft.Json.Linq
  7. Imports Microsoft.VisualBasic
  8. Imports System.IO
  9. Imports System.Text
  10. Imports System.Net
  11. Imports System.Windows.forms
  12. Imports System.Threading.Tasks

  13. Namespace ExcelViewVBDotnet
  14.    Public Class StandardInterface
  15.        '预留位置1
  16.        '预留位置2
  17.        Dim EV As SpreadsheetGear.Windows.Controls.WorkbookView,AW As SpreadsheetGear.IWorkbook,Range As SpreadsheetGear.IRange
  18.        Dim PushUrl As String = "http://192.168.0.1:8888/api/WebApi/PushCGRKD"

  19.        Public Sub Workbook_Open(OldRoot As Object,NewRoot As Object,Excel As SpreadsheetGear.Windows.Controls.WorkbookView)
  20.            EV = Excel
  21.            Excel.GetLock()
  22.            AW = Excel.ActiveWorkbook
  23.            Range = AW.ActiveWorksheet.Range
  24.            Excel.ReleaseLock()
  25.        End Sub'打开时执行事件

  26.        Public Sub RangeSelection(sender As Object,e As SpreadsheetGear.Windows.Controls.RangeSelectionChangedEventArgs)

  27.        End Sub'单元格选择后执行的事件

  28.        Public Sub RangeChanged(sender As Object,e As SpreadsheetGear.Windows.Controls.RangeChangedEventArgs)

  29.        End Sub'单元格编辑完成后执行事件

  30.        Public Sub ButtunClick(sender As Object,e As SpreadsheetGear.Windows.Controls.ShapeActionEventArgs)
  31.             If e.Shape.Name = "发送" Then
  32.                 Dim payload As String = ""

  33.                 Try
  34.                     EV.GetLock()
  35.                     If EV.RangeSelection Is Nothing OrElse EV.RangeSelection.Cells(0,0).Value Is Nothing Then
  36.                         EV.ReleaseLock()
  37.                         C1MessageBox.Show("请选择一个包含JSON字符串的单元格。", "提示", OK, C1MessageBoxIcon.Warning)
  38.                         Return
  39.                     End If

  40.                     payload = EV.RangeSelection.Cells(0,0).Text
  41.                     EV.ReleaseLock()
  42.                 Catch ex As Exception
  43.                     Try
  44.                         EV.ReleaseLock()
  45.                     Catch
  46.                     End Try
  47.                     C1MessageBox.Show("读取单元格失败:" + ex.Message, "错误", OK, C1MessageBoxIcon.Error)
  48.                     Return
  49.                 End Try

  50.                 If payload Is Nothing OrElse payload.Trim() = "" Then
  51.                     C1MessageBox.Show("单元格内容为空,请填入要推送的JSON字符串。", "提示", OK, C1MessageBoxIcon.Warning)
  52.                     Return
  53.                 End If

  54.                 Try
  55.                     JToken.Parse(payload)
  56.                 Catch ex As Exception
  57.                     C1MessageBox.Show("JSON格式无效:" + ex.Message, "提示", OK, C1MessageBoxIcon.Warning)
  58.                     Return
  59.                 End Try

  60.                 Dim client As New WebClient()
  61.                 client.Encoding = Encoding.UTF8
  62.                 client.Headers("Content-Type") = "application/json; charset=utf-8"
  63.                 AddHandler client.UploadStringCompleted, AddressOf PushCompleted

  64.                 Try
  65.                     client.UploadStringAsync(New Uri(PushUrl, UriKind.Absolute), "POST", payload)
  66.                 Catch ex As Exception
  67.                     C1MessageBox.Show("发送失败:" + ex.Message, "错误", OK, C1MessageBoxIcon.Error)
  68.                 End Try
  69.             End If
  70.        End Sub'按钮/标签点击事件

  71.        Public Sub FollowHyperlink(sender As Object)

  72.        End Sub '暂不支持

  73.        Private Sub PushCompleted(sender As Object, e As UploadStringCompletedEventArgs)
  74.             If e.Error IsNot Nothing Then
  75.                 C1MessageBox.Show("接口调用失败:" + e.Error.Message, "错误", OK, C1MessageBoxIcon.Error)
  76.                 Return
  77.             End If

  78.             If e.Result Is Nothing OrElse e.Result.Trim() = "" Then
  79.                 C1MessageBox.Show("接口无返回内容。", "提示", OK, C1MessageBoxIcon.Warning)
  80.                 Return
  81.             End If

  82.             Try
  83.                 Dim jr As JObject = CType(JsonConvert.DeserializeObject(e.Result), JObject)
  84.                 Dim msg As String = ""
  85.                 Dim detailMsg As String = ""
  86.                 Dim successText As String = ""

  87.                 If jr.Item("Message") IsNot Nothing Then
  88.                     msg = jr.Item("Message").ToString()
  89.                 End If

  90.                 If jr.Item("Success") IsNot Nothing Then
  91.                     successText = jr.Item("Success").ToString()
  92.                 End If

  93.                 If jr.Item("Details") IsNot Nothing Then
  94.                     Dim arr As JArray = CType(jr.Item("Details"), JArray)
  95.                     If arr.Count > 0 Then
  96.                         Dim item As JObject = CType(arr(0), JObject)
  97.                         If item.Item("DocNo") IsNot Nothing Then
  98.                             detailMsg = "单号:" + item.Item("DocNo").ToString()
  99.                         End If
  100.                         If item.Item("Message") IsNot Nothing Then
  101.                             If detailMsg <> "" Then
  102.                                 detailMsg = detailMsg + vbCrLf
  103.                             End If
  104.                             detailMsg = detailMsg + item.Item("Message").ToString()
  105.                         End If
  106.                     End If
  107.                 End If

  108.                 If successText = "True" OrElse successText = "true" Then
  109.                     C1MessageBox.Show(msg + vbCrLf + detailMsg, "推送成功", OK, C1MessageBoxIcon.Information)
  110.                 Else
  111.                     C1MessageBox.Show(msg + vbCrLf + detailMsg, "推送失败", OK, C1MessageBoxIcon.Warning)
  112.                 End If
  113.             Catch ex As Exception
  114.                 C1MessageBox.Show("返回解析失败:" + ex.Message + vbCrLf + e.Result, "错误", OK, C1MessageBoxIcon.Error)
  115.             End Try
  116.        End Sub

  117.    End Class
  118. '  注:除事件字眼下可以自定义代码外的所有代码不允许改动,否则编译将有可能失败。
  119. End Namespace
复制代码


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则  允许回帖邮件提醒楼主

快表软件是国内较早研究表格类软件开发平台的团队之一,迄今已有十多年的行业经验.致力于为企事业单位提供实用可靠的数字化平台。
  • 微信公众号

  • 微信小商店

  • 微信客服

  • Powered by Discuz! X3.4 | Copyright © 2022-2024, XiRong Soft. | 快表软件
  • 沪ICP备13033196号 | 营业执照 |上海西戎软件科技有限公司|沪公网安备31011502002146号|沪ICP备13033196号 |