导出Excel文件“object”未包含“get_Range”的定义

时间:2022-01-02 16:54:02
{Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: “object”未包含“get_Range”的定义
   在 CallSite.Target(Closure , CallSite , ComObject , Object , Object )
   在 System.Dynamic.UpdateDelegates.UpdateAndExecute3[T0,T1,T2,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2)
   在 CallSite.Target(Closure , CallSite , Application , Object , Object )
   在 System.Dynamic.UpdateDelegates.UpdateAndExecute3[T0,T1,T2,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2)
   在 Supcon.MOM.Facade.Export.UltraWebGridExportToExcel(UltraWebGrid grid, String title, Boolean isShowHiddenRow, Boolean isShowHiddenCol, HttpResponse Response)

17 个解决方案

#1


搜了很多出现这种问题的贴子都没有解决问题 

#2



  Excel.Application xlApp = new Excel.Application();
 Excel.Workbook workbook = xlApp.Workbooks.Add(true);
            Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];
            Excel.Range range;
  range= worksheet.get_Range(xlApp.Cells[1, 4], xlApp.Cells[RowCount + 2, 4]); 

#3


引用 2 楼 yan267 的回复:
C# code

  Excel.Application xlApp = new Excel.Application();
 Excel.Workbook workbook = xlApp.Workbooks.Add(true);
            Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];……


很多人都是用这个,可结果都不行。

#4


该回复于2010-12-06 10:11:50被版主删除

#5


引用 3 楼 jiejie526 的回复:
引用 2 楼 yan267 的回复:
C# code

Excel.Application xlApp = new Excel.Application();
Excel.Workbook workbook = xlApp.Workbooks.Add(true);
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheet……

那试试:
office是否安装
没有安装到GAC里面
dcomcnfg 中配置EXCEL权限,everyone

#6


引用 5 楼 yan267 的回复:
引用 3 楼 jiejie526 的回复:
引用 2 楼 yan267 的回复:
C# code

Excel.Application xlApp = new Excel.Application();
Excel.Workbook workbook = xlApp.Workbooks.Add(true);
Excel.Worksheet worksheet = (Excel.Works……


office肯定装了嘛


没有安装到GAC里面
dcomcnfg 中配置EXCEL权限,everyone


你说的这两项什么意思

肯本用不着嘛

#7


引用 6 楼 jiejie526 的回复:
引用 5 楼 yan267 的回复:
引用 3 楼 jiejie526 的回复:
引用 2 楼 yan267 的回复:
C# code

Excel.Application xlApp = new Excel.Application();
Excel.Workbook workbook = xlApp.Workbooks.Add(true);
Excel.Worksheet work……

怕权限不够而已,

是否是用vs2010开发的?net3.5 or 4.0?


如果是不能用原来的写法。

应该是:



var excelApp = new Excel.Application();

Excel.Range targetRange = excelApp.Range["A1"]


#8


引用 7 楼 yan267 的回复:
引用 6 楼 jiejie526 的回复:
引用 5 楼 yan267 的回复:
引用 3 楼 jiejie526 的回复:
引用 2 楼 yan267 的回复:
C# code

Excel.Application xlApp = new Excel.Application();
Excel.Workbook workbook = xlApp.Workbooks.Add(true)……



我用的是 VS2010 4.0

下面地址有我的类
你可以看下
http://blog.csdn.net/oneiter/archive/2007/04/03/1550711.aspx

#9


其实,一个类的 get_XXX 在 C# 里面是不能直接调用的。

它就是属性的 get 方法。
比如直接赋值Range r = obj.Range;

#10


引用 8 楼 jiejie526 的回复:
引用 7 楼 yan267 的回复:
引用 6 楼 jiejie526 的回复:
引用 5 楼 yan267 的回复:
引用 3 楼 jiejie526 的回复:
引用 2 楼 yan267 的回复:
C# code

Excel.Application xlApp = new Excel.Application();
Excel.Workbook workbook = xlApp……


这个是net2.0的,如果你生成net2.0,应该不会出现问题。

但是net4,简化了很多office的API访问,你只能去修改这个类符合net4的标准。

例如 原来的
Excel.Range targetRange = excelApp.get_Range("A1", Type.Missing);

只能换成
Excel.Range targetRange = excelApp.Range["A1"]

类似这样的,

#11


看看你的权限够不够。

#12


引用 10 楼 yan267 的回复:
引用 8 楼 jiejie526 的回复:
引用 7 楼 yan267 的回复:
引用 6 楼 jiejie526 的回复:
引用 5 楼 yan267 的回复:
引用 3 楼 jiejie526 的回复:
引用 2 楼 yan267 的回复:
C# code

Excel.Application xlApp = new Excel.Application();
Excel.Wo……



请教高手, 如何修改


#13


引用 12 楼 jiejie526 的回复:
引用 10 楼 yan267 的回复:
引用 8 楼 jiejie526 的回复:
引用 7 楼 yan267 的回复:
引用 6 楼 jiejie526 的回复:
引用 5 楼 yan267 的回复:
引用 3 楼 jiejie526 的回复:
引用 2 楼 yan267 的回复:
C# code

Excel.Application xlApp = new Excel.App……


公司没有装2010,没有办法帮你改那个类。

你自己修改下啊,把get_Range换成Range看看了。

#14


引用 13 楼 yan267 的回复:
引用 12 楼 jiejie526 的回复:
引用 10 楼 yan267 的回复:
引用 8 楼 jiejie526 的回复:
引用 7 楼 yan267 的回复:
引用 6 楼 jiejie526 的回复:
引用 5 楼 yan267 的回复:
引用 3 楼 jiejie526 的回复:
引用 2 楼 yan267 的回复:
C# code

Excel.Applicati……



在你回答我前,我有个同事让我用Range,说就应当用这个,我要来给你们说时,看到你既然也提到了。


呵呵,就应当用Range这个才对。

#15


Range

#16


我用了,直接报错,求指教。

#17


原来的
Excel.Range targetRange = excelApp.get_Range("A1", Type.Missing

换成
Excel.Range targetRange = excelApp.Range["A1", Type.Missing

就可以用了,get_Range换成Range,括号换成[]

#1


搜了很多出现这种问题的贴子都没有解决问题 

#2



  Excel.Application xlApp = new Excel.Application();
 Excel.Workbook workbook = xlApp.Workbooks.Add(true);
            Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];
            Excel.Range range;
  range= worksheet.get_Range(xlApp.Cells[1, 4], xlApp.Cells[RowCount + 2, 4]); 

#3


引用 2 楼 yan267 的回复:
C# code

  Excel.Application xlApp = new Excel.Application();
 Excel.Workbook workbook = xlApp.Workbooks.Add(true);
            Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];……


很多人都是用这个,可结果都不行。

#4


该回复于2010-12-06 10:11:50被版主删除

#5


引用 3 楼 jiejie526 的回复:
引用 2 楼 yan267 的回复:
C# code

Excel.Application xlApp = new Excel.Application();
Excel.Workbook workbook = xlApp.Workbooks.Add(true);
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheet……

那试试:
office是否安装
没有安装到GAC里面
dcomcnfg 中配置EXCEL权限,everyone

#6


引用 5 楼 yan267 的回复:
引用 3 楼 jiejie526 的回复:
引用 2 楼 yan267 的回复:
C# code

Excel.Application xlApp = new Excel.Application();
Excel.Workbook workbook = xlApp.Workbooks.Add(true);
Excel.Worksheet worksheet = (Excel.Works……


office肯定装了嘛


没有安装到GAC里面
dcomcnfg 中配置EXCEL权限,everyone


你说的这两项什么意思

肯本用不着嘛

#7


引用 6 楼 jiejie526 的回复:
引用 5 楼 yan267 的回复:
引用 3 楼 jiejie526 的回复:
引用 2 楼 yan267 的回复:
C# code

Excel.Application xlApp = new Excel.Application();
Excel.Workbook workbook = xlApp.Workbooks.Add(true);
Excel.Worksheet work……

怕权限不够而已,

是否是用vs2010开发的?net3.5 or 4.0?


如果是不能用原来的写法。

应该是:



var excelApp = new Excel.Application();

Excel.Range targetRange = excelApp.Range["A1"]


#8


引用 7 楼 yan267 的回复:
引用 6 楼 jiejie526 的回复:
引用 5 楼 yan267 的回复:
引用 3 楼 jiejie526 的回复:
引用 2 楼 yan267 的回复:
C# code

Excel.Application xlApp = new Excel.Application();
Excel.Workbook workbook = xlApp.Workbooks.Add(true)……



我用的是 VS2010 4.0

下面地址有我的类
你可以看下
http://blog.csdn.net/oneiter/archive/2007/04/03/1550711.aspx

#9


其实,一个类的 get_XXX 在 C# 里面是不能直接调用的。

它就是属性的 get 方法。
比如直接赋值Range r = obj.Range;

#10


引用 8 楼 jiejie526 的回复:
引用 7 楼 yan267 的回复:
引用 6 楼 jiejie526 的回复:
引用 5 楼 yan267 的回复:
引用 3 楼 jiejie526 的回复:
引用 2 楼 yan267 的回复:
C# code

Excel.Application xlApp = new Excel.Application();
Excel.Workbook workbook = xlApp……


这个是net2.0的,如果你生成net2.0,应该不会出现问题。

但是net4,简化了很多office的API访问,你只能去修改这个类符合net4的标准。

例如 原来的
Excel.Range targetRange = excelApp.get_Range("A1", Type.Missing);

只能换成
Excel.Range targetRange = excelApp.Range["A1"]

类似这样的,

#11


看看你的权限够不够。

#12


引用 10 楼 yan267 的回复:
引用 8 楼 jiejie526 的回复:
引用 7 楼 yan267 的回复:
引用 6 楼 jiejie526 的回复:
引用 5 楼 yan267 的回复:
引用 3 楼 jiejie526 的回复:
引用 2 楼 yan267 的回复:
C# code

Excel.Application xlApp = new Excel.Application();
Excel.Wo……



请教高手, 如何修改


#13


引用 12 楼 jiejie526 的回复:
引用 10 楼 yan267 的回复:
引用 8 楼 jiejie526 的回复:
引用 7 楼 yan267 的回复:
引用 6 楼 jiejie526 的回复:
引用 5 楼 yan267 的回复:
引用 3 楼 jiejie526 的回复:
引用 2 楼 yan267 的回复:
C# code

Excel.Application xlApp = new Excel.App……


公司没有装2010,没有办法帮你改那个类。

你自己修改下啊,把get_Range换成Range看看了。

#14


引用 13 楼 yan267 的回复:
引用 12 楼 jiejie526 的回复:
引用 10 楼 yan267 的回复:
引用 8 楼 jiejie526 的回复:
引用 7 楼 yan267 的回复:
引用 6 楼 jiejie526 的回复:
引用 5 楼 yan267 的回复:
引用 3 楼 jiejie526 的回复:
引用 2 楼 yan267 的回复:
C# code

Excel.Applicati……



在你回答我前,我有个同事让我用Range,说就应当用这个,我要来给你们说时,看到你既然也提到了。


呵呵,就应当用Range这个才对。

#15


Range

#16


我用了,直接报错,求指教。

#17


原来的
Excel.Range targetRange = excelApp.get_Range("A1", Type.Missing

换成
Excel.Range targetRange = excelApp.Range["A1", Type.Missing

就可以用了,get_Range换成Range,括号换成[]