简体   繁体   中英

Excel sheet writing on VB

I am collecting data from arduino serial and printing on VB . At same time i am writing into excel sheet and plotting graph.I am facing problem while writing into excel sheet. data being dispayed properly , But while writing into excel comine two string Here is my code

 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Static counter As Integer = 0
        Static average_sum As Double = 0
        Static Avg_count As Integer = 0
        Dim voltage As Double = 24
        Dim Power As Double
        Static Cc_count As Long = 0
        Static watt_hour As Double


        Try

            SerialPort1.Write("c")
            System.Threading.Thread.Sleep(250)
            Dim k As Double
            Dim distance As String = SerialPort1.ReadLine()
            k = CDbl(distance)
            ListBoxSensor.Text = k
            Dim s As New Series
            counter = counter + 1
            Count_val.Text = counter

            Avg_count = Avg_count + 1
            ' drawing graph 

            If Avg_count = 1 Then
                Power = (distance * voltage) / 3600
                watt_hour = watt_hour + Power
                'Twatt.Text = watt_hour
                Display.Text = watt_hour
                voltage_text.Text = 24

                System.Threading.Thread.Sleep(250)
                If watt_hour > 1000 Then
                    watt_hour = 1.0 + watt_hour
                End If

                Avg_count = Avg_count + 1

            End If
            If Avg_count > 1 Then
                Avg_count = 0
            End If

            Dim current As Double = watt_hour
            'Dim current As Double = k
            Dim r As DataRow = dT.NewRow
            r("time") = Now
            'r("current") = k
            r("current") = watt_hour
            'add the row
            dT.Rows.Add(r)

            'remove any row older than 1 minute
            Dim oldestTime As DateTime = Now.AddMinutes(-1)
            Do While DirectCast(dT.Rows(0)("time"), DateTime) < oldestTime

                dT.Rows.RemoveAt(0)

            Loop
            'finally bind the chart....
            Chart1.DataBind()

            'write into excel sheet for every 1 minute ..................
            If Cc_count < 10 Then
                Cc_count = Cc_count + 1
                Dim array(10) As Double
                For value As Double = 0 To Cc_count
                    array(Cc_count) = distance
                    average_sum = average_sum + array(Cc_count)
                    value = value + 1
                    V_count.Text = value

                    AVG_count_text.Text = Cc_count
                    If value > 10 Then
                        average_sum = average_sum / value
                        System.Threading.Thread.Sleep(250)
                        AVG_CR1.Text = average_sum
                        Cc_count = 0
                    End If

                Next

            End If

            If counter = 1 Then
                counter = 0
                Dim headerText = ""
                'Dim headerText As New StringBuilder=
                Dim csvFile As String = IO.Path.Combine(My.Application.Info.DirectoryPath, "Current.csv")

                If Not IO.File.Exists((csvFile)) Then
                    'headerText = "Date,TIME ,current, "
                    headerText = "Date-TIME ,current,Watt, "
                End If

                Using outFile = My.Computer.FileSystem.OpenTextFileWriter(csvFile, True)
                    If headerText.Length > 0 Then
                        outFile.WriteLine(headerText)
                    End If

                    'Dim date1 As String = "24-10-2014"
                    'Dim time1 As String = TimeOfDay()
                    Dim date1 As String = DateAndTime.DateString
                    Dim watt1 As String = CStr(watt_hour)
                    ' Dim x As String = date1 + "," + time1 + "," + distance + "," + watt1
                    Dim x As String = date1 + "," + distance + "," + watt1

                    outFile.Write(x)


                    'Dim x As String = date1 + "," + time1 + "," + distance
                    'outFile.Write(x)

                End Using
            End If
        Catch ex As Exception
        End Try
      End Sub

输出Excel表格

If i use change it to

headerText = "Date,TIME ,current, "
Dim x As String = date1 + "," + time1 + "," + distance

Write into excel sheet properly. But if i add another perameter watt, Write improperly like in image

You are writing a CSV, not to excel. Excel is just the method in which you decided to view the CSV. Don't feel bad, it is a popular mistake.

Please open the CSV in NOTEPAD and see if it looks correct. If so, you need to write to an excel file to get the results you expect, instead of to a CSV.

You should really look into using OLEDB or INTEROP , which requires more work, but you have more (OLEDB) or complete (INTEROP) control over EXCEL.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM