在Excel(xlsx)文件中用OpenXml SDK 添加一个新的Worksheet并写入字符串

来源:互联网 发布:数组转字符串 编辑:程序博客网 时间:2024/06/02 05:29

实现环境:Visual Studio 2010, OpenXml SDK 2.0.5022

这个代码实现了向一个已有的xlsx文件中添加一个新的Worksheet,并在这个Sheet中写入三行字符串“ObjectA1"~"ObjectC5"

Imports DocumentFormat.OpenXml.PackagingImports DocumentFormat.OpenXml.SpreadsheetPublic Class Form1    Private colStrings As List(Of String)    Private Sub Button1_Click(ByVal sender As System.Object, _ByVal e As System.EventArgs) Handles Button1.Click        Dim objOpenFileDialog As OpenFileDialog = New OpenFileDialog()        Dim strFilePath As String        Dim objWorkbookPart As WorkbookPart        Dim objWorkbook As Workbook        Dim objWorkSheetPart As WorksheetPart        Dim objWorksheet As Worksheet        Dim objSeetData As SheetData        Dim objShareStringTablePart As SharedStringTablePart        Dim objShareStringTable As SharedStringTable        objOpenFileDialog.Filter = "Excel Document (*.xlsx)|*.xlsx"        objOpenFileDialog.ShowDialog()        strFilePath = objOpenFileDialog.FileName        If strFilePath.Length > 0 Then            GenectStringcollection()            Using objSpreadsheetDocument = SpreadsheetDocument.Open _(strFilePath, True)                objWorkbookPart = objSpreadsheetDocument.WorkbookPart                objWorkbook = objWorkbookPart.Workbook                objWorkSheetPart = objWorkbookPart.AddNewPart _(Of WorksheetPart)()                objWorksheet = New Worksheet()                objWorkSheetPart.Worksheet = objWorksheet                objSeetData = New SheetData()                objWorksheet.Append(objSeetData)                objShareStringTablePart = objWorkbookPart.SharedStringTablePart                Dim id As Integer = 0                If objShareStringTablePart Is Nothing Then                    objShareStringTablePart = objWorkbookPart.AddNewPart _(Of SharedStringTablePart)()                    objShareStringTable = New SharedStringTable()                    objShareStringTablePart.SharedStringTable = _objShareStringTable                Else                    objShareStringTable = objShareStringTablePart. _SharedStringTable                    id = UInt32.Parse(objShareStringTable.Count)                End If                Dim ip As Integer = 0                For i As Integer = 0 To 2                    Dim objRow As New Row()                    objRow.RowIndex = i + 1                    For j As Integer = 0 To 4                        Dim objShareStringItem As New SharedStringItem()                        Dim objText = New Text()                        objText.Text = colStrings(ip)                        objShareStringItem.Append(objText)                        objShareStringTable.Append(objShareStringItem)                        Dim strref As String = String.Empty                        Select Case j                            Case 0                                strref = "A"                            Case 1                                strref = "B"                            Case 2                                strref = "C"                            Case 3                                strref = "D"                            Case 4                                strref = "E"                        End Select                        strref = strref & CStr(i + 1)                        Dim objCell As New Cell()                        objCell.CellReference = strref                        objCell.DataType = CellValues.SharedString                        Dim objCellValue As New CellValue()                        objCellValue.Text = CStr(ip + id)                        ip = ip + 1                        objCell.Append(objCellValue)                        objRow.Append(objCell)                    Next                    objSeetData.Append(objRow)                Next                Dim newSheet As New Sheet()                newSheet.Id = objWorkbookPart.GetIdOfPart(objWorkSheetPart)                newSheet.Name = "MySheet"                newSheet.SheetId = objWorkbook.Sheets.Descendants(Of Sheet)() _.Count() + 1                objWorkbook.Sheets.Append(newSheet)                objWorkbook.Save()            End Using        End If    End Sub    Private Sub GenectStringcollection()        colStrings = New List(Of String)()        For i As Integer = 1 To 3            Dim str As String = String.Empty            Select Case i                Case 1                    str = "ObjectA"                Case 2                    str = "ObjectB"                Case 3                    str = "ObjectC"            End Select            For j As Integer = 1 To 5                colStrings.Add(str & CStr(j))            Next        Next    End SubEnd Class

相关资源:http://download.csdn.net/detail/tx_officedev/3942509

原创粉丝点击