VB.NET Gembox - 切换活动电子表格
VB.NET Gembox - Switch Active Spreadsheet
我已经找遍了这个,认为我只是为了一些简单的事情而在精神上碰壁。但还是。我正在编写一个快速程序来帮助我为不同的车辆分配一些里程数 sheets。每辆车都在 sheet 范围内工作 sheet,我在 VB.net.
中使用 GemBox
基本上,根据您按下哪个按钮,它会为相应的车辆选择正确的 sheet。我找不到任何地方告诉我如何选择不同的现有 sheet 作为活动作品sheet。
这是我的atm测试码。
Public Sub SetMiles(vehicle As String)
Dim wb = ExcelFile.Load(file)
Dim ws = wb.Worksheets.ActiveWorksheet(vehicle)
loc = "F12"
ws.Cells(loc).Value = "800"
End Sub
wb.Sheets(vehicle).Activate
是最简单的方法。
尽管我建议您也验证 vehicle
字符串以确保 Sheet
实际存在。然后您可以忽略、显示消息或创建新的 sheet.
我假设您想激活 sheet 以便用户可以进行手动输入。如果您正在进行自动输入(无用户交互),那么您最好不要激活 sheet。大致如下:
Public Sub SetMiles(vehicle As String, wb as Workbook, loc as string, Mileage as string)
' passing the values is better encapsulation for OOP purposes
' in your example above, loc="F12", Mileage = "800"
' You have passed the Mileage as a string - but you could also use a numeric value.
' Validate sheet name here if important.
' Validate range name here if important.
wb.Sheets(vehicle).Range(loc).Value = Mileage
End Sub
编辑:似乎 GemBox 使用 Worksheets
而不是 Sheets
。
在 GemBox.Spreadsheet 中,您无需将 sheet 设置为活动状态即可使用它。
换句话说,假设您有一个 Excel 文件,其中包含 "Sheet1"
和 "Sheet2"
。要写入这些 sheets,您可以使用以下内容:
Dim wb = ExcelFile.Load(File)
Dim ws = wb.Worksheets("Sheet1")
ws.Cells("A1").Value = "Foo"
ws = wb.Worksheets("Sheet2")
ws.Cells("A1").Value = "Bar"
您还可以使用以下内容:
Dim wb = ExcelFile.Load(File)
Dim ws = wb.Worksheets(0)
ws.Cells("A1").Value = "Foo"
ws = wb.Worksheets(1)
ws.Cells("A1").Value = "Bar"
所以,我相信你需要的是:
Public Sub SetMiles(vehicle As String)
Dim wb = ExcelFile.Load(File)
Dim ws = wb.Worksheets(vehicle)
Loc = "F12"
ws.Cells(Loc).Value = "800"
End Sub
最后,如果您确实需要将某些 sheet 设置为活动状态,那么您可以使用 GemBox.Spreadsheet 进行设置,如下所示:
wb.Worksheets.ActiveWorksheet = wb.Worksheets(vehicle)
然而,GemBox.Spreadsheet 并不关心 sheet 是否处于活动状态,您可以访问和修改它而不管。通过将 sheet 设置为活动状态,当您在 Excel 应用程序中打开该文件时,该 sheet 将是您看到的第一个可见文件。
我已经找遍了这个,认为我只是为了一些简单的事情而在精神上碰壁。但还是。我正在编写一个快速程序来帮助我为不同的车辆分配一些里程数 sheets。每辆车都在 sheet 范围内工作 sheet,我在 VB.net.
中使用 GemBox基本上,根据您按下哪个按钮,它会为相应的车辆选择正确的 sheet。我找不到任何地方告诉我如何选择不同的现有 sheet 作为活动作品sheet。
这是我的atm测试码。
Public Sub SetMiles(vehicle As String)
Dim wb = ExcelFile.Load(file)
Dim ws = wb.Worksheets.ActiveWorksheet(vehicle)
loc = "F12"
ws.Cells(loc).Value = "800"
End Sub
wb.Sheets(vehicle).Activate
是最简单的方法。
尽管我建议您也验证 vehicle
字符串以确保 Sheet
实际存在。然后您可以忽略、显示消息或创建新的 sheet.
我假设您想激活 sheet 以便用户可以进行手动输入。如果您正在进行自动输入(无用户交互),那么您最好不要激活 sheet。大致如下:
Public Sub SetMiles(vehicle As String, wb as Workbook, loc as string, Mileage as string)
' passing the values is better encapsulation for OOP purposes
' in your example above, loc="F12", Mileage = "800"
' You have passed the Mileage as a string - but you could also use a numeric value.
' Validate sheet name here if important.
' Validate range name here if important.
wb.Sheets(vehicle).Range(loc).Value = Mileage
End Sub
编辑:似乎 GemBox 使用 Worksheets
而不是 Sheets
。
在 GemBox.Spreadsheet 中,您无需将 sheet 设置为活动状态即可使用它。
换句话说,假设您有一个 Excel 文件,其中包含 "Sheet1"
和 "Sheet2"
。要写入这些 sheets,您可以使用以下内容:
Dim wb = ExcelFile.Load(File)
Dim ws = wb.Worksheets("Sheet1")
ws.Cells("A1").Value = "Foo"
ws = wb.Worksheets("Sheet2")
ws.Cells("A1").Value = "Bar"
您还可以使用以下内容:
Dim wb = ExcelFile.Load(File)
Dim ws = wb.Worksheets(0)
ws.Cells("A1").Value = "Foo"
ws = wb.Worksheets(1)
ws.Cells("A1").Value = "Bar"
所以,我相信你需要的是:
Public Sub SetMiles(vehicle As String)
Dim wb = ExcelFile.Load(File)
Dim ws = wb.Worksheets(vehicle)
Loc = "F12"
ws.Cells(Loc).Value = "800"
End Sub
最后,如果您确实需要将某些 sheet 设置为活动状态,那么您可以使用 GemBox.Spreadsheet 进行设置,如下所示:
wb.Worksheets.ActiveWorksheet = wb.Worksheets(vehicle)
然而,GemBox.Spreadsheet 并不关心 sheet 是否处于活动状态,您可以访问和修改它而不管。通过将 sheet 设置为活动状态,当您在 Excel 应用程序中打开该文件时,该 sheet 将是您看到的第一个可见文件。