【发布时间】:2015-04-05 21:35:44
【问题描述】:
我正在使用以下代码从 excel 文件中读取数据并将某些列添加到列表视图中。导入后,我会将它们导出为 CSV(未显示代码)。
我的问题是 excel 文件是一个提取文件,它按事务显示数据,导致数千行。我想根据 EPoS 行执行相当于 SUMIF 的 excel 并在可能的情况下合并信息?
以下数据示例...
Public Structure ExcelRows
Dim Unit As String
Dim Outlet As String
Dim EPoS As String
Dim Quantity As String
Dim Value As String
Dim DateSale As String
End Structure
Public ExcelRowList As List(Of ExcelRows) = New List(Of ExcelRows)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Public Function GetInfo() As Boolean
Dim Completed As Boolean = False
Dim MyExcel As New Excel.Application
Dim enUK As New CultureInfo("en-GB")
Dim DOS As String = "01/04/15"
MyExcel.Workbooks.Open("C:\Dropbox\Tills\taRunAction1.xlsx")
MyExcel.Sheets("Report").Activate()
MyExcel.Range("A10").Activate()
Dim ThisRow As New ExcelRows
Do
If MyExcel.ActiveCell.Value > Nothing Or MyExcel.ActiveCell.Text > Nothing Then
ThisRow.Unit = MyExcel.ActiveCell.Value
MyExcel.ActiveCell.Offset(0, 1).Activate()
ThisRow.Outlet = MyExcel.ActiveCell.Value
MyExcel.ActiveCell.Offset(0, 1).Activate()
ThisRow.DateSale = MyExcel.ActiveCell.Value
MyExcel.ActiveCell.Offset(0, 2).Activate()
ThisRow.EPoS = MyExcel.ActiveCell.Value
MyExcel.ActiveCell.Offset(0, 1).Activate()
ThisRow.Quantity = MyExcel.ActiveCell.Value
MyExcel.ActiveCell.Offset(0, 1).Activate()
ThisRow.Value = MyExcel.ActiveCell.Value
ExcelRowList.Add(ThisRow)
MyExcel.ActiveCell.Offset(1, -6).Activate()
Else
Completed = True
Exit Do
End If
Loop
MyExcel.Workbooks.Close()
MyExcel = Nothing
Return Completed
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If GetInfo() = True Then
For Each xItem In ExcelRowList
Dim lViewItem As ListViewItem
lViewItem = ListView1.Items.Add(xItem.Unit)
lViewItem.SubItems.AddRange(New String() {xItem.Outlet, xItem.EPoS, xItem.Quantity, xItem.Value, xItem.DateSale})
Next
End If
End Sub
【问题讨论】: