NPOI

 我在博客上看到很多人在用NPOI,发现很管用,不如就自己写一篇推荐给大家,但是后来自己整理还不如别人的好,所以我把NPOI的介绍转大家看吧,很详细。那我就自己写一下我写NPOI的步骤吧:


NPOI下载地址: http://npoi.codeplex.com 


NPOI 1.2.x主要由POIFSDDFHPSFHSSFSSUtil六部分组成。

NPOI.POIFS

OLE2/ActiveX文档属性读写库

NPOI.DDF

Microsoft Office Drawing读写库

NPOI.HPSF

OLE2/ActiveX文档读写库

NPOI.HSSF

Microsoft Excel BIFF(Excel 97-2003)格式读写库

NPOI.SS

Excel公用接口及Excel公式计算引擎

NPOI.Util

基础类库,提供了很多实用功能,可用于其他读写文件格式项目的开发

 


 

 

NPOI 2.0主要由SS, HPSF,DDF, HSSF, XWPF, XSSF, OpenXml4Net, OpenXmlFormats组成,具体列表如下:

Assembly名称

模块/命名空间

说明

NPOI.DLL

NPOI.POIFS

OLE2/ActiveX文档属性读写库

NPOI.DLL

NPOI.DDF

微软Office Drawing读写库

NPOI.DLL

NPOI.HPSF

OLE2/ActiveX文档读写库

NPOI.DLL

NPOI.HSSF

微软Excel BIFF(Excel 97-2003, doc)格式读写库

NPOI.DLL

NPOI.SS

Excel公用接口及Excel公式计算引擎

NPOI.DLL

NPOI.Util

基础类库,提供了很多实用功能,可用于其他读写文件格式项目的开发

NPOI.OOXML.DLL

NPOI.XSSF

Excel 2007(xlsx)格式读写库

NPOI.OOXML.DLL

NPOI.XWPF

Word 2007(docx)格式读写库

NPOI.OpenXml4Net.DLL

NPOI.OpenXml4Net

OpenXml底层zip包读写库

NPOI.OpenXmlFormats.DLL

NPOI.OpenXmlFormats

微软Office OpenXml对象关系库

 

1,添加引用:

NPOI_第1张图片

 

 2,浏览——文件位置——确定


 


3,代码:

Imports System.IO                       '提供允许读写文件和数据流的类
Imports NPOI.HSSF.UserModel             'HSSF是Microsoft Excel 97-2003 格式读写库
Imports NPOI.SS.UserModel               'Excel公用接口及Excel公式计算引擎

Public Class ExportExcelModulelUI
    ''' <summary>L
    ''' 导出Excel
    ''' </summary>
    ''' <remarks></remarks>
    '''
    Public Class uiExportExcel
        Public Shared Sub ExportExcel(ByVal dgv As System.Windows.Forms.DataGridView)
            Dim workBook As New HSSFWorkbook    '工作簿
            Dim sheet As HSSFSheet              '工作表
            'Dim excelRow As New HSSFRow             '行集
            Dim excelRow As NPOI.HSSF.UserModel.HSSFRow

            Dim lie As Integer
            Dim hangRow As Integer
            Dim lieCow As Integer

            Dim saveDialog As Windows.Forms.SaveFileDialog     '保存文件的对话框

            Dim ms As MemoryStream                             '内存中的数据流
            Dim fs As FileStream                               '文件流
            Dim filename As String                             '保存时的文件名称

            '如果DataGridView中没有数据,则不导出Excel
            If dgv.Rows.Count = 0 Then
                MsgBox("无法导出为Excel!", MsgBoxStyle.Exclamation, "警告")
                Return
            End If

            sheet = workBook.CreateSheet                      '在工作簿中创建表
            excelRow = sheet.CreateRow(0)                     '在工作表中创建标题行Row(0)

            '添加每列列标题

            For lie = 0 To dgv.Columns.Count - 1
                '将可见的列的标题写到单元格中(如果某列不可见,那么会在导出的Excel中空出这列)
                If dgv.Columns(lie).Visible = True Then
                    excelRow.CreateCell(lie).SetCellValue(dgv.Columns(lie).HeaderText)
                End If
            Next
            '添加其他行和列
            For hangRow = 1 To dgv.Rows.Count
                excelRow = sheet.CreateRow(hangRow) '每遍历一行,则在sheet中创建一行
                For lieCow = 0 To dgv.Columns.Count - 1 '遍历每一行中的所有列
                    '如果该列可见,则导出该列单元格的值
                    If dgv.Columns(lieCow).Visible = True Then
                        excelRow.CreateCell(lieCow).SetCellValue(dgv.Rows(hangRow - 1).Cells(lieCow).Value.ToString)
                    End If
                    '如果该列不可见,则将该列设置为隐藏
                    If dgv.Columns(lieCow).Visible = False Then
                        sheet.SetColumnHidden(lieCow, True)
                    End If
                Next
            Next
            saveDialog = New Windows.Forms.SaveFileDialog                '保存文件对话框
            saveDialog.DefaultExt = "xls"                                '设置默认文件扩展名
            saveDialog.Filter = "Excel文件|*.xls"                        '文件类型
            saveDialog.ShowDialog()                                      '弹出保存文件对话框

            If saveDialog.ShowDialog = Windows.Forms.DialogResult.Cancel Then   '判断按钮是“保存”还是“取消”
                Exit Sub
            Else
                filename = saveDialog.FileName                               '将对话框中输入的文件名赋给filename
                ms = New MemoryStream()
                fs = New FileStream(filename, FileMode.Create)
                workBook.Write(ms)                                           '写入数据
                workBook.Write(fs)
            End If
            fs.Close()                                                   '关闭文件
            workBook = Nothing
            ms.Close()
            ms.Dispose()
        End Sub
    End Class
End Class


4,会出错的地方:

NPOI_第2张图片

如果自己在引用模块前写了一句话:

 DataGridView.AllowUserToAddRows = False     '禁止新行出现。我就是出现了这个问题让后就读出null值了


你可能感兴趣的:(NPOI)