16,554
社区成员
发帖
与我相关
我的任务
分享
Private Sub Button_ChooseExcelFile_Click(sender As Object, e As EventArgs) Handles Button_ChooseExcelFile.Click
If 打开文件对话框.ShowDialog() = DialogResult.OK Then
EX_File.Text = 打开文件对话框.FileName
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim EX文件名 As String = 打开文件对话框.FileName ''包含路径的文件名
xlswb = xlsapp.Workbooks.Open(EX文件名)
xlsws = xlswb.Worksheets(1)
Dim 行 = xlsws.UsedRange.Rows.Count
Dim i As Int64
Dim 全部数据(行 - 2, 1), 船名航次(行 - 2) As String
'把数据装到数组里
For i = 2 To 行
IMO = xlsws.Cells(i, 1).text
Voage = xlsws.Cells(i, 2).text
BL = xlsws.Cells(i, 3).text
全部数据(i - 2, 0) = xlsws.Cells(i, 1).text & xlsws.Cells(i, 2).text
全部数据(i - 2, 1) = xlsws.Cells(i, 3).text
船名航次(i - 2) = 全部数据(i - 2, 0)
'Console.WriteLine(全部数据(i - 2, 0) & 全部数据(i - 2, 1) & vbCrLf)
'Console.WriteLine(船名航次(i - 2))
Next
'对船名航次数值的1,2两列进行取唯一值操作
Dim listString As New List(Of String)()
For Each eachString As String In 船名航次
If Not listString.Contains(eachString) Then
listString.Add(eachString)
End If
Next
'最后从List里取出各个字符串进行操作
For Each eachString As String In listString
'打印每个字符串
'Console.Write(eachString)
Dim 单航次提单 As New ArrayList
For i = 0 To LBound(全部数据)
If 全部数据(i, 0) = eachString Then
单航次提单.Add(全部数据(i, 1))
IMO = xlsws.Cells(i + 2, 1).text
Voage = xlsws.Cells(i + 2, 2).text
End If
Next
' Console.Write(listString(0) & " " & listString(1) & " " & listString(2))//有三个航次
Call sendto(IMO, Voage, 单航次提单())
Next
xlswb.Close()
End Sub
Private Sub sendto(IMO As String, Voage As String, ByRef 报文() As String)
Console.Write(IMO, Voage)
For n = 0 To 报文.Length - 1
Console.Write(报文(n))
Next
End Sub
Dim 单航次提单 As New List(Of String)
For i = 0 To LBound(全部数据)
If 全部数据(i, 0) = eachString Then
单航次提单.Add(全部数据(i, 1))
IMO = xlsws.Cells(i + 2, 1).text
Voage = xlsws.Cells(i + 2, 2).text
End If
Next
' Console.Write(listString(0) & " " & listString(1) & " " & listString(2))//有三个航次
Call sendto(IMO, Voage, 单航次提单.ToArray)
'ByRef 报文()的ByRef在你的这个函数里面压根就没有重新赋值,把ByRef删了也更易读!不然就是误导了
Private Sub sendto(IMO As String, Voage As String, 报文() As String)
Console.WriteLine(IMO, Voage)
For Each n In 报文
Console.Write(n)
Next
End Sub
Call sendto(IMO, Voage, 单航次提单.ToArray())