Whi*_*uit 6 vb.net openxml openxml-sdk
以下创建了一个XLSX,添加了两个包含一些数据的工作表.然后,我希望以后能够根据名称(或最好是id)获取电子表格,以便我可以在以后添加/修改工作表.我仍然坚持如何在下面的代码不完整的地方再次获取工作表.
Sub Main()
Using doc As SpreadsheetDocument = SpreadsheetDocument.Create(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "c:\temp\fubar.xlsx"), SpreadsheetDocumentType.Workbook)
Dim currSheet As WorksheetPart
' create the workbook
doc.AddWorkbookPart()
doc.WorkbookPart.Workbook = New Workbook()
doc.WorkbookPart.Workbook.AppendChild(New Sheets())
currSheet = InsertWorksheet(doc.WorkbookPart, "First")
currSheet.Worksheet.First().AppendChild(New Row())
currSheet.Worksheet.First().First().AppendChild(New Cell() With { _
.CellValue = New CellValue("1") _
})
currSheet = InsertWorksheet(doc.WorkbookPart, "Second")
currSheet.Worksheet.First().AppendChild(New Row())
currSheet.Worksheet.First().First().AppendChild(New Cell() With { _
.CellValue = New CellValue("1") _
})
For Each s As Sheet In doc.WorkbookPart.Workbook.Sheets
System.Diagnostics.Debug.WriteLine(s.Id)
System.Diagnostics.Debug.WriteLine(s.SheetId)
Next
cursheet = ... 'Get worksheetpart with name "First"
cursheet = ... 'Get worksheet with sheetid = 2
doc.WorkbookPart.Workbook.Save()
End Using
End Sub
Private Function InsertWorksheet(ByVal workbookPart As WorkbookPart, SheetName As String) As WorksheetPart
' Add a new worksheet part to the workbook.
Dim newWorksheetPart As WorksheetPart = workbookPart.AddNewPart(Of WorksheetPart)()
newWorksheetPart.Worksheet = New Worksheet(New SheetData)
newWorksheetPart.Worksheet.Save()
Dim sheets As Sheets = workbookPart.Workbook.GetFirstChild(Of Sheets)()
Dim relationshipId As String = workbookPart.GetIdOfPart(newWorksheetPart)
' Get a unique ID for the new sheet.
Dim sheetId As UInteger = 1
If (sheets.Elements(Of Sheet).Count() > 0) Then
sheetId = sheets.Elements(Of Sheet).Select(Function(s) s.SheetId.Value).Max() + 1
End If
' Add the new worksheet and associate it with the workbook.
Dim sheet As Sheet = New Sheet
sheet.Id = relationshipId
sheet.SheetId = sheetId
sheet.Name = sheetName
sheets.Append(sheet)
workbookPart.Workbook.Save()
Return newWorksheetPart
End Function
Run Code Online (Sandbox Code Playgroud)
Adr*_*ian 18
你快到了.你已经循环了doc.WorkbookPart.Workbook.Sheets.在此之后您需要做的就是插入一个if语句,通过查看属性s.Name或查看您要查找的工作表是否是循环中的当前点s.Id
另外,指示在这里,你可以使用LINQ选择直接名称或ID的工作表:
sID as Integer = doc.WorkbookPart.Workbook.Descendants(Sheet)().First(s => s.Name.Equals("First")).Id
Run Code Online (Sandbox Code Playgroud)
要么
sID as Integer = doc.WorkbookPart.Workbook.Descendants(Sheet)().First(s => s.Id.Equals(2)).Id
Run Code Online (Sandbox Code Playgroud)
一旦你拥有了这个ID就可以了
wsp As WorksheetPart = doc.WorkbookPart.GetPartById(sID)
Run Code Online (Sandbox Code Playgroud)
如果有错误,我很抱歉,我正在快速行驶的火车上使用iPhone上的脑编译器进行此操作.希望至少应该让你朝着正确的方向前进.