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 将是您看到的第一个可见文件。