VB.NET Gembox - 切换活动电子表格

时间:2018-02-12 17:44:31

标签: excel vb.net gembox-spreadsheet

我已经全身心地想着这一点,并认为我只是为了简单的事情而打了一个心灵砖墙。但仍然。我正在编写一个快速程序来帮助我为不同的车辆提供一些里程表电子表格。每个车辆都在电子表格中有工作表,我在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

2 个答案:

答案 0 :(得分:1)

在GemBox.Spreadsheet中,您不需要将工作表设置为活动状态以便使用它。

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

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应用程序中打开该文件时看到的第一个可见工作表。

答案 1 :(得分: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