关于命名空间的问题

时间:2022-09-08 09:13:09
前的引用加了这么一句代码:
using Excel = Microsoft.Office.Interop.Excel;


有了这么一句代码,我在想后面用到"Microsoft.Office.Interop.Excel.xxxxx"的地方不都可以用“Excel.xxxxx”代替吗?

然而实际运行时,下面这句代码,老提示“Excel局部变量,在未定义前不能使用"
int LastRow = xlSheet.get_Range("A65536", "A65536").get_End(Excel.XlDirection.xlUp).Row;

而改成下列这样,就ok了。
int LastRow = xlSheet.get_Range("A65536", "A65536").get_End(Microsoft.Office.Interop.Excel.XlDirection.xlUp).Row;


啥子原因吗

15 个解决方案

#1


using Microsoft.Office.Interop;

#2


既然编译器能找到 Excel 局部变量,那么就说明确实存在这个变量定义。点击鼠标右键,选择“转到定义”去查看源代码。

#3


你用的是不是vs2015或者之前的版本
你是不是还有一个Excel的局部变量

#4


别名Excel改Excel1,试试

#5


你调用和声明别名是在一个类中吗

#6


我也怀疑会不会还有一个Excel定义?

#7


引用 3 楼 caozhy 的回复:
你用的是不是vs2015或者之前的版本量


是的可以考虑一下c#版本问题。

#8


引用 1 楼 Saleayas 的回复:
using Microsoft.Office.Interop;


如果这样写了,那么在与using Excel = Microsoft.Office.Interop.Excel;同时使用,那么 Excel 这个词儿就有歧义了。

#9


using  myExcel = Microsoft.Office.Interop.Excel; 用myExcel来使用其中的属性方法、

#10


我用VS2010特地试了一下是可以的,楼主肯定是有其它地方的代码影响了using Excel = Microsoft.Office.Interop.Excel;的使用。

#11


你调用和声明别名是在一个类中吗

#12


不知道楼主是在winform中还是asp中调用excel,个人经验经常会出现excel退不出去的情况,即使是dispose了,using了close了null了都没用,你可以在任务管理器里发现用尽办法各种关闭、清空后内存里还是有一个占用几十上百兆的excel,打开一次文件,就占用一份内存,直到程序退出,远没有当年用vb6省心,winform还凑活,asp就等着内存用尽吧。所以还是建议弄个可以操作excel文件的控件。

我之前各种baidu、实验后放弃了,后各位高手有没有什么办法?

#13


最大可能性还是哪里定义了EXCEL这个变量

#14


你定义的 using  Excel 与 Microsoft.Office.Interop. Excel 这两个Excel 名称重名,在下面调用Excel时,默认有个就近原则,也就是调用了你自己定义的using Excel,而你using类中没有    .XlDirection.xlUp,你把using Excel 换个变量名试试(不要与类库中的冲突OK)。应该就是这种情况。

#15


引用 8 楼 sp1234 的回复:
Quote: 引用 1 楼 Saleayas 的回复:

using Microsoft.Office.Interop;


如果这样写了,那么在与using Excel = Microsoft.Office.Interop.Excel;同时使用,那么 Excel 这个词儿就有歧义了。


谢谢,原来症结在这里...

#1


using Microsoft.Office.Interop;

#2


既然编译器能找到 Excel 局部变量,那么就说明确实存在这个变量定义。点击鼠标右键,选择“转到定义”去查看源代码。

#3


你用的是不是vs2015或者之前的版本
你是不是还有一个Excel的局部变量

#4


别名Excel改Excel1,试试

#5


你调用和声明别名是在一个类中吗

#6


我也怀疑会不会还有一个Excel定义?

#7


引用 3 楼 caozhy 的回复:
你用的是不是vs2015或者之前的版本量


是的可以考虑一下c#版本问题。

#8


引用 1 楼 Saleayas 的回复:
using Microsoft.Office.Interop;


如果这样写了,那么在与using Excel = Microsoft.Office.Interop.Excel;同时使用,那么 Excel 这个词儿就有歧义了。

#9


using  myExcel = Microsoft.Office.Interop.Excel; 用myExcel来使用其中的属性方法、

#10


我用VS2010特地试了一下是可以的,楼主肯定是有其它地方的代码影响了using Excel = Microsoft.Office.Interop.Excel;的使用。

#11


你调用和声明别名是在一个类中吗

#12


不知道楼主是在winform中还是asp中调用excel,个人经验经常会出现excel退不出去的情况,即使是dispose了,using了close了null了都没用,你可以在任务管理器里发现用尽办法各种关闭、清空后内存里还是有一个占用几十上百兆的excel,打开一次文件,就占用一份内存,直到程序退出,远没有当年用vb6省心,winform还凑活,asp就等着内存用尽吧。所以还是建议弄个可以操作excel文件的控件。

我之前各种baidu、实验后放弃了,后各位高手有没有什么办法?

#13


最大可能性还是哪里定义了EXCEL这个变量

#14


你定义的 using  Excel 与 Microsoft.Office.Interop. Excel 这两个Excel 名称重名,在下面调用Excel时,默认有个就近原则,也就是调用了你自己定义的using Excel,而你using类中没有    .XlDirection.xlUp,你把using Excel 换个变量名试试(不要与类库中的冲突OK)。应该就是这种情况。

#15


引用 8 楼 sp1234 的回复:
Quote: 引用 1 楼 Saleayas 的回复:

using Microsoft.Office.Interop;


如果这样写了,那么在与using Excel = Microsoft.Office.Interop.Excel;同时使用,那么 Excel 这个词儿就有歧义了。


谢谢,原来症结在这里...