Question of library version using

Oct 18, 2010 at 5:22 AM
Edited Oct 18, 2010 at 7:19 AM

I have tried some of the examples(SetCellValuesInXls, ImportXlsToDataTable) in the package.

However, there exist some problem when I was using NPOI.dll(1.2.3.0)

It works fine if I run each example individually and refer to the old version library

( ICSharpCode.SharpZipLib.dll, Ionic.Zip.dll(1.9.1.5), NPOI.DDF.dll,

NPOI.dll(1.2.1.0), NPOI.HPSF.dll(1.2.1.0), NPOI.HSSF.dll(1.2.1.0), NPOI.POIFS.dll(1.2.1.0), NPOI.Util.dll(1.2.1.0) )

As I was using the following Classes and References of new version:

Class:

using System;
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.IO;
using NPOI.HSSF.UserModel;
using NPOI.HPSF;
using NPOI.POIFS.FileSystem;
using NPOI.SS.UserModel;

References:

Ionic.Zip.dll(1.9.1.5), NPOI.dll(1.2.3.0), System.dll, System.Data.dll, System.Xml.dll

 

Here comes a message from compilier:

cannot implicitly convert type 'NPOI.SS.UserModel.Cell', an explicit conversion exist.

and the error be marked on the following rows :

HSSFSheet sheet = hssfworkbook.GetSheet("Sheet1");

HSSFCell cell = row.GetCell(i);

 

Working enviremont:

Windows XP Pro V.2002

Windows Visual C# 2008 Express Edition

Could you plz tell me what's going on? THX a lot~

Oct 18, 2010 at 8:25 AM
Edited Oct 18, 2010 at 8:46 AM

中文版:

  • ·         小弟正在学习NPOI所以试了几个网站上的范例,个别执行时没有任何问题。

只是发现各个范例所参考到的NPOI.dll版本不同,原也不以为意。

直到试着将"SetCellValuesInXls""ImportXlsToDataTable"

两个项目的功能写在同个项目才发现,

两个程序使用的NPOI.dll版本不一样且不能以其中较新的版本代替,一个是:

    NPOI.dll(1.2.1.0)

另一个是:

    NPOI.dll(1.2.3.0)

初步了解NPOI.dll(1.2.3.0)包含了:

    旧版NPOI.HPSF.dll(1.2.1.0),

    NPOI.HSSF.dll(1.2.1.0)

    以及更新"Apply NPOI.SS interfaces to NPOI.HSSF namespace" 

操作环境:

       1.旧版的参考:

           ICSharpCode.SharpZipLib.dll,

           Ionic.Zip.dll(1.9.1.5),

           NPOI.DDF.dll,

           NPOI.dll(1.2.1.0),

           NPOI.HPSF.dll(1.2.1.0),

           NPOI.HSSF.dll(1.2.1.0), 

           NPOI.POIFS.dll(1.2.1.0), 

           NPOI.Util.dll(1.2.1.0) )

       2.新版的参考:

           Ionic.Zip.dll(1.9.1.5), NPOI.dll(1.2.3.0),

       3.引入的函式库:

           using System;
           using System;
           using System.Collections.Generic; 
           using System.Text;
           using System.Collections;
           using System.ComponentModel;
           using System.Data;
           using System.IO;
           using NPOI.HSSF.UserModel;
           using NPOI.HPSF;
           using NPOI.POIFS.FileSystem;
           using NPOI.SS.UserModel;

        4.Visual C#2008 Express Edition, Windows XP Pro V.2002

详细情况:

       1.当引用新版NPOI.dll(1.2.3.0)的问题:

                HSSFSheet sheet = hssfworkbook.GetSheet("Sheet1");

                HSSFCell cell = row.GetCell(i);

                 以上这两行会被标记起来并出现,并出现如下的错误讯息:

                "型别'NPOI.SS.UserModelSheet'不能隐含转换 

                 'NPOI.HSSF.UserModel.HSSFSheet'

                 已有明确转换存在(您是否漏掉了转型?)"

       2.当引用旧版NPOI.dll(1.2.1.0)的问题:

                "using NPOI.SS.UserModel;"

                会被标记起来并出现:

                "命名空间'NPOI.SS'中没有型别或命名空间名称'UserModel'

                (您是否遗漏了组件参考?)"

                我猜它的意思是因为旧版没有定义这个功能,所以才会这样。

        3.(尝试)以旧版的参考基础下去除NPOI.dll(1.2.1.0),NPOI.HPSF.dll(1.2.1.0),

           NPOI.HSSF.dll(1.2.1.0)并引入NPOI.dll(1.2.3.0):

                结果:问题与1.(新版)相同。

        4.在新版参考基础下批注掉'using NPOI.SS.UserModel;'

                结果:仍然存在1.(新版)的问题且抓不到SheetRow的类别定义。

问题: 1.为什么有时候使用新版的NPOI.dl,无法成功编译一些单纯用旧版能编译成功的程序?

        (不是应该都会向下兼容?)

        2.请问这个问题该从什么方下去解决呢? 我应该怎么做比较好?

感谢各位先进、大大看了小弟我这么冗长陈述,担心说明不确实所以条列了一些以为重要的讯息^^"

 

Oct 18, 2010 at 9:58 AM

問題已經解決了~

使用新版即可,只是有些example執行時編譯器,會要求你針對該類別要強制轉型.(我也不知道為什麼舊版就不用轉型?)

有類似問題可以交流一下: easysmart@msn.com