0

我已经到处寻找这个,并认为我只是为了一些简单的事情而撞到了精神上的砖墙。但还是。我正在编写一个快速程序来帮助我处理不同车辆的里程电子表格。每辆车在电子表格中都有其工作表,我在 VB.net 中使用 GemBox。

基本上,根据您按下的按钮选择相应车辆的正确表。我在任何地方都找不到任何东西告诉我如何选择不同的现有工作表作为活动工作表。

这是我的测试代码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
4

2 回答 2

1

在 GemBox.Spreadsheet 中,您无需将工作表设置为活动状态即可使用它。

换句话说,假设您有一个 Excel 文件,其中包含"Sheet1""Sheet2". 要写入这些表格,您可以使用以下内容:

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

最后,如果您确实需要将某些工作表设置为活动状态,那么您可以使用 GemBox.Spreadsheet 执行此操作,如下所示:

wb.Worksheets.ActiveWorksheet = wb.Worksheets(vehicle)

但是,GemBox.Spreadsheet 也不关心工作表是否处于活动状态,无论如何您都可以访问和修改它。通过将工作表设置为活动工作表,该工作表将是您在 Excel 应用程序中打开该文件时看到的第一个可见工作表。

于 2018-02-13T10:17:36.027 回答
0

wb.Sheets(vehicle).Activate是最简单的方法。

虽然我建议您也验证vehicle字符串以确保它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.

于 2018-02-12T18:54:15.917 回答