[英]Writing values from excel cells to notepad using vb.net
我正在嘗試將某些計算值從 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
我更改了您的工作表和工作簿的名稱。 我只是不喜歡與類名同名的變量。
我使用了Path.Combine
所以我不必擔心反斜杠是否存在。
我創建並填充了一個包含來自電子表格的值的雙打列表。
我正在使用字符串構建器來構建要保存的文本。 與 String 不同, 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
您也可以嘗試以下方法。 我只是稍微修改了你的一些代碼。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.