zoukankan      html  css  js  c++  java
  • Excel阅读器NPOI

    什么是NPOI?

    NPOI 它是 POI 项目的 .NET 版本号。

    POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。

    使用 NPOI 你就能够在没有安装 Office 或者对应环境的机器上对 WORD/EXCEL 文档进行读写。NPOI是构建在POI 3.x版本号之上的。它能够在没有安装Office的情况下对Word/Excel文档进行读写操作。

    传统操作Excel遇到的问题

    1、假设是.NET,须要在server端装Office。且及时更新它。以防漏洞,还须要设定权限同意.NET訪问COM+,假设在导出过程中出问题可能导致server宕机。

    2、Excel会把仅仅包括数字的列进行类型转换,本来是文本型的。Excel会将其转成数值型的。比方编号000123会变成123。

    3、导出时,假设字段内容以“-”或“=”开头。Excel会把它当成公式进行,会报错。

    4、Excel会依据Excel文件前8行分析数据类型,假设正好你前8行某一列仅仅是数字。那它会觉得该列为数值型,自己主动将该列转变成类似1.42702E+17格式,日期列变成包括日期和数字的。

    NPOI优势

    1、您能够全然免费使用该框架

    2、包括了大部分EXCEL的特性(单元格样式、数据格式、公式等等)

    3、专业的技术支持服务(24*7全天候) (非免费)

    4、支持处理的文件格式包含xls,xlsx, docx.

    5、採用面向接口的设计架构( 能够查看 NPOI.SS 的命名空间)

    6、同一时候支持文件的导入和导出

    7、基于.net 2.0 也支持xlsx 和 docx格式(当然也支持.net 4.0)

    8、来自全世界大量成功且真实的測试Cases

    9、大量的实例代码

    11、你不须要在server上安装微软的Office。能够避免版权问题。

    12、使用起来比Office PIAAPI更加方便,更人性化。

    13、你不用去花大力气维护NPOINPOI Team会不断更新、改善NPOI。绝对省成本。

    注意:以上所有来摘抄于百度

    小编理解

    传统的是使用ExcelAutomation进行Excel文件读写,对Excel版本号有要求。而且速度慢,有安全性,并发性问题。

    传统的做法,请详见一下博客

    http://blog.csdn.net/sundenskyqq/article/details/5440976

    NPOI是一款轻量级的进行XLS文件读写的开发包,全然是二进制操作。不依赖与Excel。

    详细操作

    下载NPOI工具包

    http://download.csdn.net/detail/zhouchaoqiang/7458821

    以后使用的时候,直接加入引用就可以

    样例

        简介

        Workbook 工作薄。sheet页,row行,cell 单元格

        我们恐怕对Excel并不陌生吧。上面的几个英文单词,都应该知道是什么意思吧!用NPOI操作的时候。主要是对这几个名字进行的操作

         简单的导出操作

    Imports NPOI.SS.UserModel
    Imports NPOI.HSSF.UserModel
    Imports System.IO
    
    
    Public Class Form1
    
        'Workbook 工作薄,sheet页,row行。cell 单元格
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            '创建一个工作薄
            Dim hssfworkbook As New HSSFWorkbook()
            '创建一页
            Dim sheet1 As ISheet = hssfworkbook.CreateSheet("好的")
            '定义一行
            Dim rowHeader As IRow = sheet1.CreateRow(0)  '对第一行操作
            rowHeader.CreateCell(0, CellType.STRING).SetCellValue("你好") '第一个单元格的内容
            '定义一个数据流
            Dim stream As Stream = File.OpenWrite("E:/2.XLS")  '保存的路径
            '写入操作
            hssfworkbook.Write(stream)
            '最后会在保存的路径下生成
        End Sub
    End Class
    

      样例

        在做机房收费系统的时候。须要依据DataGridView中的数据,如图所看到的。来导出Excel表。

    一下是代码。

    0

     
        Sub ExportToExcell(ByVal DataGrid As DataGridView)
            '假设dataGrid没有记录的话,给出提示
            If DataGrid.RowCount = 0 Then
                MsgBox("没有记录")
                Exit Sub
            End If
            '定义保存对话框对象
            Dim sdfExport As New SaveFileDialog
            '保存的文件类型
            sdfExport.Filter = "Excel文件|*.xls"
            '显示保存对话框
            If sdfExport.ShowDialog = False Then
                Return
            End If
            '保存文件名称
            Dim fileName As String = sdfExport.FileName
            '文件名称不能为空
            If fileName = "" Then
                MsgBox("文件名称不能为空")
                Exit Sub
            End If
            '定义写入流
            Dim stream As Stream
            '创建一个工作薄
            Dim workbook As New HSSFWorkbook
            '创建一页
            Dim sheet As ISheet = workbook.CreateSheet("导出数据")
            '创建一行
            Dim rowHeader As IRow = sheet.CreateRow(0)
            '写入datagridview的表头
            For c = 0 To DataGrid.ColumnCount - 1
                rowHeader.CreateCell(c, CellType.STRING).SetCellValue(DataGrid.Columns(c).HeaderText)
    
            Next
    
            '通过循环来写入datagrid中的数据
            For i = 1 To DataGrid.RowCount - 1
                rowHeader = sheet.CreateRow(i)
                For b = 0 To DataGrid.ColumnCount - 1
                    rowHeader.CreateCell(b, CellType.STRING).SetCellValue(DataGrid.Rows(i).Cells(b).Value.ToString())
                Next
            Next
            '写入数据流
            stream = File.OpenWrite(fileName)
            workbook.Write(stream)
            '关闭数据流
            stream.Close()
            MsgBox("导出成功")
    
        End Sub

     

       小结:事实上也没什么,刚才也说了,就是对Workbook,sheet,row,cell的操作,仅仅要你找到所须要的属性,一切OK。当然了NPOI对Excel的操作功能还有非常多。假设大家有兴趣的话。能够參见下面博客。

    http://www.cnblogs.com/atao/category/209358.html

     

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    windows10(64位)Anaconda3+Python3.6搭建Tensorflow(cpu版本)及keras
    Windows10下安装pytorch并导入pycharm
    应用程序无法正常启动0xc000007b解决
    Clion安装配置
    Android Studio安装&&安装bug
    VMWARE虚拟机安装64位系统此主机支持IntelVTx 但IntelVTx处于禁用状态
    A. Text Volume
    1001 数组中和等于K的数对
    11100
    Seek the Name, Seek the Fame
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4855853.html
Copyright © 2011-2022 走看看