Excel2000 파일 읽기

5348 단어 Excel
   Excel2000         Excel2003         :ption='System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
   at
Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format, Object Password, Object WriteResPassword, Object IgnoreReadOnlyRecommended, Object Origin, Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad)

본인은 영어를 잘 못합니다.
By developing against the PIA for Excel 2002, your program will be compatible for all versions of Excel 2002 (10.0) and above. The failing machine, however, is running with Excel 2000 (9.0), which is a version below the version that you have developed against.
There is no officially supported PIA below Excel 2002, so if you need your program to run on Excel 2000 (9.0) then you will have to create your own custom interop assembly. You can use TlbImp.exe to create an interop assembly for Excel 9.0, as explained in the article  Achieving Backward Compatibility with .NET Interop: Excel as Case Study .
If your assembly is strong-named, then you need to create a strong-named interop assembly. This can be done by providing the name of your .pfx or .snk file via the/keyfile switch, as demonstrated in the article  How to create a Primary Interop Assembly (PIA) . That article is also making use of the/primary switch in order to create a "primary interop assembly". Making the interop assembly primary is not really needed in your case, but does not hurt. What the article omits, however, is the use of the/sysarray switch, which you should use.
Making a strong-named interop assembly does have some complexities to consider, however. For some more details, have a read of  Using TLBIMP.exe to create Strong Named Interop Assemblies . (Among other things, this article explains the need for the/sysarray switch.)
In short, making a custom interop assembly is very simple if your assembly is not strong named. It is more complicated if your assembly is strong-named and, therefore, you need to create a strong-named interop assembly. But hopefully these articles should get you going.

좋은 웹페이지 즐겨찾기