object hrexcel;Type excelType = Type.GetTypeFromProgID("Excel.Application");
hrexcel = Activator.CreateInstance(excelType);
SetObjPeoperty(hrexcel,"Visible","true");
SetObjPeoperty(hrexcel,"UserControl","true");
object workbooks=GetObjPeoperty(hrexcel,"Workbooks");
object xBk =CallObjMethod(workbooks,"Add",new object[]{true});
object excelSheet=GetObjPeopertyWithParam(xBk,"Worksheets",new object[]{1});
object[] agr2 = new object[2] { 1, 1 };
object excelcellcell=GetObjPeopertyWithParam(excelSheet,"Cells",agr2);为什么最后这个方法一直提示 未知的名称 ?请大家帮忙
hrexcel = Activator.CreateInstance(excelType);
SetObjPeoperty(hrexcel,"Visible","true");
SetObjPeoperty(hrexcel,"UserControl","true");
object workbooks=GetObjPeoperty(hrexcel,"Workbooks");
object xBk =CallObjMethod(workbooks,"Add",new object[]{true});
object excelSheet=GetObjPeopertyWithParam(xBk,"Worksheets",new object[]{1});
object[] agr2 = new object[2] { 1, 1 };
object excelcellcell=GetObjPeopertyWithParam(excelSheet,"Cells",agr2);为什么最后这个方法一直提示 未知的名称 ?请大家帮忙
解决方案 »
- c#中未将对象引用设置到对象的实例的问题
- 为什么还是有一两个不能由大到小呢??
- c#导出数据到EXCEL,如何实现EXCEL滚动行为?
- sns 网站里的游戏都是自己做的吗?我也想在自己网站里添加几个应该怎么做?
- C#或JAVASCRIPT字符串截取问题
- Pocket PC开发,求EVC++3.0,急用!
- vs2005 中window应用程序form窗体运行时无法关闭电脑
- [求助]Web程序用户控件中搜索的问题!~
- 请教各位高手,我的httpModule怎么就是注册不成功呢?
- 请教一下C#里边这么写是什么意思。类型后面带*号的。
- winform gridview DefaultCellStyle.Format
- 怎样用代码创建IIS网站,并设置IIS的相关属性,比如读取,写入.注意不是虚拟目录???虚拟目录的程序网站很多,但网站不适用
哪个方法? GetObjPeopertyWithParam? 你当前的类里定义过这个函数了?
{
// Assumes a using statement in the file:
// using System.Reflection;
Type objType = Obj.GetType();
return objType.InvokeMember(member,
BindingFlags.Default |
BindingFlags.GetProperty,
null, Obj, new object[] {Params});
}
没有引用啊 需要用反射
{
// Assumes a using statement in the file:
// using System.Reflection;
Type objType = Obj.GetType();
return objType.InvokeMember(member,
BindingFlags.Default |
BindingFlags.GetProperty,
null, Obj, new object[] {Params});
}
没有引用啊 需要用反射
public interface Range
Member of Microsoft.Office.Interop.Excel
.net提示 无法解析这个类型!
object objBook;
object objBooks;
object objSheets;
object objSheet;
//object objRange;
object objCells;
object[] Parameters;
object Cells1;
object Cells2;
object range; Type objExcelType = Type.GetTypeFromProgID("Excel.Application");
if (objExcelType == null)
{
return;
}
objApp = Activator.CreateInstance(objExcelType);
if (objApp == null)
{
return;
}
//设置属性
SetObjPeoperty(objApp,"Visible","true");
SetObjPeoperty(objApp,"UserControl","true");
//获取Workbook集
objBooks = objApp.GetType().InvokeMember("Workbooks", BindingFlags.GetProperty, null, objApp, null);
//添加一个新的Workbook
objBook = objBooks.GetType().InvokeMember("Add", BindingFlags.InvokeMethod, null, objBooks, null);
//获取Sheet集
objSheets = objBook.GetType().InvokeMember("Worksheets", BindingFlags.GetProperty, null, objBook, null);
//获取第一个Sheet对象
Parameters = new Object[1] { 1 };
objSheet = objSheets.GetType().InvokeMember("Item", BindingFlags.GetProperty, null, objSheets, Parameters);
for (int j=0; j<dataArray.GetLength(1);j++)
{
switch(dt.Columns[j].DataType.ToString())
{
case "System.String":
formatstring="@";
break;
case "System.DateTime":
formatstring="yyyy-mm-dd";
break;
default:
formatstring="G/通用格式";
break;
}
for(int k=0;k<dataArray.GetLength(0);k++)
{
Parameters = new Object[2] { startRow+k, startCol+j}; //test
Cells1= objSheet.GetType().InvokeMember("Cells",BindingFlags.GetProperty, null, objSheet, Parameters);
SetObjPeoperty(Cells1,"NumberFormatLocal",formatstring);
SetObjPeoperty(Cells1,"Value2",dataArray[k,j]);
}
}这样是可以的 但是有个问题 为什么的worksheet的get_Range方法通过反射不能调用?msdn 说不适合写代码 不明白具体原因 cell 填充太慢了
Type oType = null; object hrexcel; Type excelType = Type.GetTypeFromProgID("Excel.Application");
hrexcel = Activator.CreateInstance(excelType); oType = hrexcel.GetType(); //SetObjPeoperty(hrexcel, "Visible", "true");
oType.InvokeMember("Visible", System.Reflection.BindingFlags.SetProperty | BindingFlags.Default, null, hrexcel, new object[] { true }); //SetObjPeoperty(hrexcel, "UserControl", "true");
oType.InvokeMember("UserControl", System.Reflection.BindingFlags.SetProperty | System.Reflection.BindingFlags.Default, null, hrexcel, new object[] { true }); //object workbooks = GetObjPeoperty(hrexcel, "Workbooks");
object workbooks = oType.InvokeMember("Workbooks", System.Reflection.BindingFlags.GetProperty | System.Reflection.BindingFlags.Default, null, hrexcel, null);
//object xBk = CallObjMethod(workbooks, "Add", new object[] { true });
oType = workbooks.GetType();
object xBk = oType.InvokeMember("Add", System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Default, null, workbooks, new object[] { true }); //object excelSheet = GetObjPeopertyWithParam(xBk, "Worksheets", new object[] { 1 });
oType = xBk.GetType();
object excelSheet = oType.InvokeMember("Worksheets",
System.Reflection.BindingFlags.GetProperty | System.Reflection.BindingFlags.Default,
null, xBk, new object[] { 1 });
object[] agr2 = new object[2] { 1, 1 }; //该方法可以正常执行
//object excelcellcell = GetObjPeopertyWithParam(excelSheet, "Cells", agr2);
object excelcellcell = oType.InvokeMember("Cells",
System.Reflection.BindingFlags.GetProperty | System.Reflection.BindingFlags.Default,
null, excelSheet, agr2); //如果用反射的话,没有get_Range方法,只有Range方法
object execelRange = oType.InvokeMember("Range",
System.Reflection.BindingFlags.GetProperty | System.Reflection.BindingFlags.Default,
null, excelSheet, new object[] { "A1:A3" }); //选择
oType = execelRange.GetType();
oType.InvokeMember("Select",
System.Reflection.BindingFlags.GetProperty | System.Reflection.BindingFlags.Default,未发现楼主最后一行代码不能执行
然后
如果用反射的话,没有get_Range方法,只有Range方法
oType = execelRange.GetType();
oType.InvokeMember("Select",
System.Reflection.BindingFlags.GetProperty | System.Reflection.BindingFlags.Default,
null, execelRange, null);