Ненавижу делать предложение, а не показывать, как оно будет работать. Ниже приведен пример использования настраиваемого объекта с именем Machine
для хранения данных. Этот класс является минимальным для объекта и используется только в качестве примера, чтобы вы начали. В нем есть несколько полей, которые пригодится при переходе по списку для выполнения ваших вычислений. Здесь вы также можете добавить некоторые пользовательские функции/подпрограммы, чтобы помочь в какой-то задаче, которая включает объекты «Machine». Также здесь вы можете добавить некоторые функции сравнения, которые позволят вам сортировать между прочим. После того, как вы положите все это вместе, вы должны составить список действительных объектов Machine
.
Это список, который вы могли бы использовать, чтобы помочь вам перейти к вычислению/удалению дубликатов части вашей задачи. В процессе вычисления данных вы можете создать окончательный список объектов Machine
, которые вы могли бы использовать для экспорта в Excel с заголовками или отображения его в DataGridView. Надеюсь это поможет.
машина класса
Public Class Machine
Private name As String
Private partNumber As String
Private inventoryIn As Integer
Private inventoryOut As Integer
Private inventoryMissing As Integer
Public Sub New(inName As String, inPartNum As String, inInvIn As Integer, inInvOut As Integer, InInvMis As Integer)
name = inName
partNumber = inPartNum
inventoryIn = inInvIn
inventoryOut = inInvOut
inventoryMissing = InInvMis
End Sub
Property GetName As String
Get
Return name
End Get
Set(value As String)
name = value
End Set
End Property
Public Overrides Function ToString() As String
Return "Name: " + name + " #: " + partNumber + vbTab + " In:" + inventoryIn.ToString() + " Out:" + inventoryOut.ToString() + " Miss:" + inventoryMissing.ToString()
End Function
End Class
Теперь к вашему вопросу чтения файла
Я ничего с участием первенствует не использовать. Так как у вас есть простой файл csv
, мы будем его использовать. Также мы будем использовать класс Machine
. Используя диалоговое окно открытого файла, мы получаем имя файла для чтения. Переменная partsList
создана для хранения объектов Machine
, созданных при чтении файла. Затем цикл for each
проходит через список и отображает результаты в текстовом поле формы.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim dialog As OpenFileDialog = New OpenFileDialog
dialog.Filter = "CSV document(*.csv)|*.csv"
Dim result As DialogResult = dialog.ShowDialog
If (result = DialogResult.OK) Then
Dim csvFile As String = dialog.FileName
Dim partsList As List(Of Machine) = ReadText(csvFile)
For Each curMac As Machine In partsList
TextBox1.AppendText(curMac.ToString() + Environment.NewLine)
Next
End If
End Sub
Функция для чтения файла CSV
Private Function ReadText(filePath As String) As List(Of Machine)
Dim fileReader As System.IO.StreamReader
Dim data As List(Of Machine) = New List(Of Machine)
fileReader = My.Computer.FileSystem.OpenTextFileReader(filePath)
Dim curline As String = ""
While (Not curline Is Nothing)
curline = fileReader.ReadLine()
'' need to check for valid data
'' if anything is invalid simply ignore it... i.e. your bad rows
'' keep in mind this will also ignore good rows that have a single piece of data bad
If (StringOK(curline)) Then
Dim newMac = GetMac(curline)
data.Add(newMac)
End If
End While
Return data
End Function
Несколько вспомогательных функций для проверки данных
Private Function StringOK(inString As String) As Boolean
If (String.IsNullOrEmpty(inString)) Then
Return False
End If
Dim splitArray() As String = inString.Split(",")
Try
If ((String.IsNullOrEmpty(splitArray(0))) Or (String.IsNullOrEmpty(splitArray(1)))) Then
Return False
End If
Dim value As Integer
If ((Not Integer.TryParse(splitArray(2), value)) Or
(Not Integer.TryParse(splitArray(3), value)) Or
(Not Integer.TryParse(splitArray(4), value))) Then
Return False
End If
Return True
Catch ex As Exception
Return False
End Try
End Function
Function GetMac(inString As String) As Machine
Dim splitArray() As String = inString.Split(",")
Dim value As Integer
Dim name As String = splitArray(0)
Dim number As String = splitArray(1)
Integer.TryParse(splitArray(2), value)
Dim invIn As Integer = value
Integer.TryParse(splitArray(3), value)
Dim invOut As Integer = value
Integer.TryParse(splitArray(4), value)
Dim invMis As Integer = value
Return New Machine(name, number, invIn, invOut, invMis)
End Function
Вы на самом деле не описано, что вы уже пробовали или где вы застряли. Что конкретно ваш вопрос? Если вы просто спрашиваете, как создать файл Excel в .NET, для этого есть библиотеки/учебные пособия/примеры в Интернете. – David
Я искал и не нашел хорошего. e-iceblue выглядит нормально. Это действительно сумасшествие, все, что нужно, - это взять CSV-файл, суммировать значения в столбцах 1-5 на основе номера детали и показать его в формате данных. и экспортировать его как xls. – TAdams79
Я бы предложил вам разделить проблему на более мелкие и исследовать каждый, а затем задать конкретный вопрос о более мелкой проблеме. Например, можете ли вы открыть файл? Можете ли вы прочитать файл? Можете ли вы читать csv? Можете ли вы сохранить содержимое csv? Можете ли вы прочитать этот сохраненный контент? ... –