Запись значений из ячеек Excel в блокнот с помощью vb.net - PullRequest
1 голос
/ 01 марта 2020

Я пытаюсь скопировать определенные вычисленные значения из MS Excel в блокнот. Но это получение пустых значений. Может кто-нибудь проверить и помочь мне решить эту проблему?

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

  workbook = xls.Workbooks.Open(filereader & "excelfilename.xls")
  worksheet = workbook.Worksheets(1)

  Dim Datawriter As New StreamWriter(filereader & "FiletoCopy.txt")


  Dim range1 As Excel.Range
  Dim range2 As Excel.Range
  Dim range3 As Excel.Range
  Dim range4 As Excel.Range
  Dim range5 As Excel.Range



  Dim CellValue1 As String
  Dim CellValue2 As String
  Dim CellValue3 As String
  Dim CellValue4 As String
  Dim CellValue5 As String



   range1 = CType(worksheet, Excel.Worksheet).Range(“A1”)
   range2 = CType(worksheet, Excel.Worksheet).Range(“A2”)
   range3 = CType(worksheet, Excel.Worksheet).Range(“A3”)
   range4 = CType(worksheet, Excel.Worksheet).Range(“A4”)
   range5 = CType(worksheet, Excel.Worksheet).Range(“A5”)



   CellValue1 = Math.Round((range1.Value), 2)
   CellValue2 = Math.Round((range2.Value), 2)
   CellValue3 = Math.Round((range3.Value), 2)
   CellValue4 = Math.Round((range4.Value), 2)
   CellValue5 = Math.Round((range5.Value), 2)

   Datawriter.WriteLine(CellValue1, vbCrLf)
   Datawriter.WriteLine(CellValue2, vbCrLf)
   Datawriter.WriteLine(CellValue3, vbCrLf)
   Datawriter.WriteLine(CellValue4, vbCrLf)
   Datawriter.WriteLine(CellValue5, vbCrLf)


   Datawriter.Close()

   MessageBox.Show("Output Generated Sucessfully", "Success", MessageBoxButtons.OK)
End Sub

Ответы [ 2 ]

0 голосов
/ 13 марта 2020

Вы также можете попробовать следующие методы. Я просто немного изменил ваш код.

Imports System.IO
Imports Microsoft.Office.Interop.Excel
Public Class Form1
    Dim filereader As String = "E:\Julie\Case\AccessDB\"
    Dim xls As Application = New Application()
    Dim Workbook As Workbook
    Dim Worksheet As Worksheet
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Workbook = xls.Workbooks.Open(filereader & "exceltest.xlsx")
        Worksheet = Workbook.Worksheets(1)
        Dim Datawriter As New StreamWriter(filereader & "FiletoCopy.txt")
        For i = 1 To 5
            Dim temp As String = (CType(Worksheet.Cells(1, i), Range)).Text
            Datawriter.WriteLine(temp, vbCrLf)
        Next
        Datawriter.Close()

        MessageBox.Show("Output Generated Sucessfully", "Success", MessageBoxButtons.OK)
    End Sub
End Class
0 голосов
/ 02 марта 2020

Я изменил названия вашего рабочего листа и рабочей книги. Мне просто не нравятся переменные, имена которых совпадают с именами классов.

Я использовал Path.Combine, поэтому мне не нужно беспокоиться о том, есть ли обратная коса sh или нет.

Я создал и заполнил список парных чисел, содержащих значения из вашей электронной таблицы.

Я использую построитель строк для создания текста, который необходимо сохранить. A StringBuilder является изменчивым (изменяемым) в отличие от String. Каждая строка должна быть отброшена, а новая должна быть создана иначе.

Я использовал класс File в System.IO для создания и записи файла.

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Dim filereader = "C:\SomeFolder\"
    Dim wbook = xls.Workbooks.Open(Path.Combine(filereader, "excelfilename.xls"))
    Dim wsheet As Excel.Worksheet = CType(wbook.Worksheets(1), Excel.Worksheet)
    Dim lstDoubles As New List(Of Double) From {
        CDbl(wsheet.Range("A1").Value),
        CDbl(wsheet.Range("A2").Value),
        CDbl(wsheet.Range("A3").Value),
        CDbl(wsheet.Range("A4").Value),
        CDbl(wsheet.Range("A5").Value)
    }
    'StringBuilder requires Imports System.Text
    Dim sb As New StringBuilder
    For Each d In lstDoubles
        Dim roundedString = Math.Round(d, 2).ToString
        sb.AppendLine(roundedString)
    Next
    File.WriteAllText(Path.Combine(filereader, "FiletoCopy.txt"), sb.ToString)
    MessageBox.Show("Output Generated Sucessfully", "Success", MessageBoxButtons.OK)
End Sub
...