【问题标题】:Writing values from excel cells to notepad using vb.net使用 vb.net 将值从 excel 单元格写入记事本
【发布时间】:2020-06-13 19:05:27
【问题描述】:

我正在尝试将某些计算值从 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

【问题讨论】:

  • 我会检查 filereader 值是否是一个包含有效路径并以斜杠 `\` 结尾的字符串
  • @Ahmad 嗨!我试过了,但路径存在并且也以 "\" 结尾,但仍然没有复制值。
  • 在这种情况下,在写入文件之前添加一个断点并调试代码并确保您正在读取的工作表已经包含您希望找到的数据
  • 您是否通过调试检查 range1..range5 是否确实获得了值?也许 Datawriter 部分工作得很好

标签: excel vb.net visual-studio


【解决方案1】:

我更改了您的工作表和工作簿的名称。我只是不喜欢与类名相同的变量。

我使用了Path.Combine,所以我不必担心反斜杠是否存在。

我创建并填写了一个包含您电子表格中的值的双精度列表。

我正在使用字符串构建器来构建要保存的文本。与字符串不同,StringBuilder 是可变的(可变的)。每个字符串都必须被丢弃,否则会创建一个新字符串。

我使用System.IO 中的File 类来创建和写入文件。

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

【讨论】:

    【解决方案2】:

    您也可以尝试以下方法。我只是稍微修改了你的一些代码。

    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
    

    【讨论】:

      猜你喜欢
      • 2018-10-08
      • 1970-01-01
      • 2016-01-13
      • 2015-09-17
      • 2022-01-14
      • 2017-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多