下面的VBA是将快表中查询到的明细数据通过金蝶云星空API接口发送的示例供参考!
- Imports SpreadsheetGear
- Imports C1.Silverlight
- Imports C1.Silverlight.C1MessageBoxButton
- Imports C1.Silverlight.C1MessageBoxIcon
- Imports Newtonsoft.Json
- Imports Newtonsoft.Json.Linq
- Imports Microsoft.VisualBasic
- Imports System.IO
- Imports System.Text
- Imports System.Net
- Imports System.Windows.forms
- Imports System.Threading.Tasks
- Namespace ExcelViewVBDotnet
- Public Class StandardInterface
- '预留位置1
- '预留位置2
- Dim EV As SpreadsheetGear.Windows.Controls.WorkbookView,AW As SpreadsheetGear.IWorkbook,Range As SpreadsheetGear.IRange
- Dim PushUrl As String = "http://192.168.0.1:8888/api/WebApi/PushCGRKD"
- Public Sub Workbook_Open(OldRoot As Object,NewRoot As Object,Excel As SpreadsheetGear.Windows.Controls.WorkbookView)
- EV = Excel
- Excel.GetLock()
- AW = Excel.ActiveWorkbook
- Range = AW.ActiveWorksheet.Range
- Excel.ReleaseLock()
- End Sub'打开时执行事件
- Public Sub RangeSelection(sender As Object,e As SpreadsheetGear.Windows.Controls.RangeSelectionChangedEventArgs)
- End Sub'单元格选择后执行的事件
- Public Sub RangeChanged(sender As Object,e As SpreadsheetGear.Windows.Controls.RangeChangedEventArgs)
- End Sub'单元格编辑完成后执行事件
- Public Sub ButtunClick(sender As Object,e As SpreadsheetGear.Windows.Controls.ShapeActionEventArgs)
- If e.Shape.Name = "发送" Then
- Dim payload As String = ""
- Try
- EV.GetLock()
- If EV.RangeSelection Is Nothing OrElse EV.RangeSelection.Cells(0,0).Value Is Nothing Then
- EV.ReleaseLock()
- C1MessageBox.Show("请选择一个包含JSON字符串的单元格。", "提示", OK, C1MessageBoxIcon.Warning)
- Return
- End If
- payload = EV.RangeSelection.Cells(0,0).Text
- EV.ReleaseLock()
- Catch ex As Exception
- Try
- EV.ReleaseLock()
- Catch
- End Try
- C1MessageBox.Show("读取单元格失败:" + ex.Message, "错误", OK, C1MessageBoxIcon.Error)
- Return
- End Try
- If payload Is Nothing OrElse payload.Trim() = "" Then
- C1MessageBox.Show("单元格内容为空,请填入要推送的JSON字符串。", "提示", OK, C1MessageBoxIcon.Warning)
- Return
- End If
- Try
- JToken.Parse(payload)
- Catch ex As Exception
- C1MessageBox.Show("JSON格式无效:" + ex.Message, "提示", OK, C1MessageBoxIcon.Warning)
- Return
- End Try
- Dim client As New WebClient()
- client.Encoding = Encoding.UTF8
- client.Headers("Content-Type") = "application/json; charset=utf-8"
- AddHandler client.UploadStringCompleted, AddressOf PushCompleted
- Try
- client.UploadStringAsync(New Uri(PushUrl, UriKind.Absolute), "POST", payload)
- Catch ex As Exception
- C1MessageBox.Show("发送失败:" + ex.Message, "错误", OK, C1MessageBoxIcon.Error)
- End Try
- End If
- End Sub'按钮/标签点击事件
- Public Sub FollowHyperlink(sender As Object)
- End Sub '暂不支持
- Private Sub PushCompleted(sender As Object, e As UploadStringCompletedEventArgs)
- If e.Error IsNot Nothing Then
- C1MessageBox.Show("接口调用失败:" + e.Error.Message, "错误", OK, C1MessageBoxIcon.Error)
- Return
- End If
- If e.Result Is Nothing OrElse e.Result.Trim() = "" Then
- C1MessageBox.Show("接口无返回内容。", "提示", OK, C1MessageBoxIcon.Warning)
- Return
- End If
- Try
- Dim jr As JObject = CType(JsonConvert.DeserializeObject(e.Result), JObject)
- Dim msg As String = ""
- Dim detailMsg As String = ""
- Dim successText As String = ""
- If jr.Item("Message") IsNot Nothing Then
- msg = jr.Item("Message").ToString()
- End If
- If jr.Item("Success") IsNot Nothing Then
- successText = jr.Item("Success").ToString()
- End If
- If jr.Item("Details") IsNot Nothing Then
- Dim arr As JArray = CType(jr.Item("Details"), JArray)
- If arr.Count > 0 Then
- Dim item As JObject = CType(arr(0), JObject)
- If item.Item("DocNo") IsNot Nothing Then
- detailMsg = "单号:" + item.Item("DocNo").ToString()
- End If
- If item.Item("Message") IsNot Nothing Then
- If detailMsg <> "" Then
- detailMsg = detailMsg + vbCrLf
- End If
- detailMsg = detailMsg + item.Item("Message").ToString()
- End If
- End If
- End If
- If successText = "True" OrElse successText = "true" Then
- C1MessageBox.Show(msg + vbCrLf + detailMsg, "推送成功", OK, C1MessageBoxIcon.Information)
- Else
- C1MessageBox.Show(msg + vbCrLf + detailMsg, "推送失败", OK, C1MessageBoxIcon.Warning)
- End If
- Catch ex As Exception
- C1MessageBox.Show("返回解析失败:" + ex.Message + vbCrLf + e.Result, "错误", OK, C1MessageBoxIcon.Error)
- End Try
- End Sub
- End Class
- ' 注:除事件字眼下可以自定义代码外的所有代码不允许改动,否则编译将有可能失败。
- End Namespace
复制代码
|
|
快表帝国客服01