关于操作Excel的奇怪问题

baijinlong4 2009-06-24 12:36:26
用C#操作Excel 开发环境是vs2005 导入了Interop.Excel.dll等引用
下面是代码
public string ExcelReplace(string filePath, string strOld, string strNew)
{
string strResult = "aaaaaa";
Application excel;
excel = new ApplicationClass();
excel.Visible = false;

string modelFile = filePath; //文件名
_Workbook wb = excel.Workbooks._Open(modelFile, Missing.Value, Missing.Value, Missing.Value, Missing.Value
, Missing.Value, Missing.Value, Missing.Value, Missing.Value
, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
_Worksheet xSheet = (_Worksheet)wb.Sheets[1];
int icount = wb.Sheets.Count;
for (int i = 1; i <= icount; i++)
{
//try
//{
xSheet = (_Worksheet)wb.Sheets;
object what = strOld; //查找字符串
object retxt = strNew; //替换字符串
xSheet.Cells.Replace(what, retxt, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
//}
//catch
//{
// strResult = "trycuowu";
//}
}
wb.Save();
NAR(xSheet);
wb.Close(false, Missing.Value, Missing.Value);
NAR(wb);
excel.Quit();
NAR(excel);
System.GC.Collect();

return strResult;
}


private void NAR(object o)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(o);//强制释放一个对象
}
catch
{
}
finally
{
o = null;
}
}



报错

无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“Excel._Worksheet”。此操作失败的原因是对 IID 为“{000208D8-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 不支持此接口 (异常来自 HRESULT:0x80004002 (E_NOINTERFACE))。


高手求助
...全文
162 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jungle0_0 2009-06-26
  • 打赏
  • 举报
回复
Excel.Application appExcel = new Excel.Application();
Excel.Workbook workbookData;
Excel.Worksheet worksheetData;

workbookData = appExcel.Workbooks.Open(strFileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
worksheetData = (Excel.Worksheet)workbookData.Sheets[iSheet];
surlew 2009-06-24
  • 打赏
  • 举报
回复
System.__ComObject”的 COM 对象强制转换为接口类型“Excel._Worksheet

就是因为你的这个类型不对,你找找看是不是你把类型搞错啦
lsj_zrp 2009-06-24
  • 打赏
  • 举报
回复
Excel.Application appExcel = new Excel.Application();
Excel.Workbook workbookData;
Excel.Worksheet worksheetData;

workbookData = appExcel.Workbooks.Open(strFileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
worksheetData = (Excel.Worksheet)workbookData.Sheets[iSheet];
功能说明:  本程序为电子设计人员设计串联分压电路时,挑选电阻之用,您可以根据公司已有库存与输出阻值列表对比来挑选电阻,从而达到减少电阻库存编号的目的。  本程序附带极限误差计算(可用于对量产误差进行原理性验证)  支持E6, E12, E24, E48, E96, E192全系列电阻  导出到Excel功能:在Excel文件中集成有排序宏,选择电阻非常方便 使用方法:  输入以下参数(可选): 1. Vin(V),Vout(V), 2. 选择输出允许误差(V) 3. 选择电阻系列(E6, E12, E24, E48, E96, E192)  点击【计算】,程序开始扫描可用电阻,并输出到右边的列表框  点击【导出到Excel】程序将以当前时间为名称,在Data目录生成Excel文件  打开Excel文件,点击【按误差排序】或【按阻值排序】按钮,Excel将自动排序  计算之后,在列表框内双击或右键菜单可呼出【极限误差分析器】。 1.【基本分压电路】极限误差分析器 2.【并联型三端电压基准】极限误差分析器 3. 对一部分人来说:不算不知道,一算吓一跳!用极限误差分析器分析下吧! 分压电路常见应用场合: 场效应管或晶体管偏置 三端稳压IC,电压基准IC输入反馈 注意事项: 1. 正确选择电阻系列,详细请参见【电阻标准系列。xls】 六个系列可分为两大类: 第一类:E6, E12, E24:它们内部向上兼容; 第二类:E48, E96, E192:它们内部向上兼容; 但是这两大类之间却互不兼容(即不是包含关系),此,如果你发现选择高精度系列时,反而达不到更高的精度,请不要奇怪。 2. 打开Excel文件时,Excel文件中有用来排序操作的宏,如果希望使用按钮排序,请将宏安全性设为中或低,允许宏的运行, 刚哥 完成于:2010-08-04

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧