【发布时间】:2016-02-10 06:39:05
【问题描述】:
所以搜索返回了一些关于如何使用 Replace 方法的结果,但我还没有得到任何工作。希望你们能帮助我指出正确的方向!
这就是我所拥有的。调用 Replace 方法时出现错误。我怀疑我在 Range 上做错了什么,但不确定。
private Process DoExcelWork(Process excelProc, string filePath)
{
// Initialize Excel Application
Excel.Application excelApp = new Excel.Application();
excelApp.Visible = false;
// Get the process
Process[] possibleProcesses = Process.GetProcessesByName("Excel");
excelProc = possibleProcesses[0];
// Empty Object for optional arguments
object optional = System.Reflection.Missing.Value;
Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(filePath, optional, optional, optional, optional, optional, optional, optional, optional, optional, optional, optional, optional, optional, optional);
// Seems to be necessary to do stuff to the file
excelWorkbook.VBProject.References.AddFromGuid("{0002E157-0000-0000-C000-000000000046}", 5, 3);
foreach (Excel.Worksheet excelWorksheet in excelWorkbook.Worksheets)
{
Excel.Range lastCell = excelWorksheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell, optional);
Excel.Range excelRange = excelWorksheet.get_Range("A1", lastCell);
excelRange.Replace("Blue", "Red", Excel.XlLookAt.xlPart, Excel.XlSearchOrder.xlByRows, false, optional, optional, optional);
}
excelWorkbook.Save();
excelWorkbook.Close(0);
// Quit Excel
excelApp.Quit();
// Release
NAR(excelApp);
return excelProc;
}
这是错误:
System.Runtime.InteropServices.COMException (0x800706BE):远程 过程调用失败。 (来自 HRESULT 的异常:0x800706BE)在 System.RuntimeType.ForwardCallToInvokeMember(字符串成员名称, BindingFlags 标志、对象目标、Int32[] aWrapperTypes、MessageData& msgData)在 Microsoft.Office.Interop.Excel.Range.Replace(对象什么, 对象替换、对象 LookAt、对象 SearchOrder、对象 MatchCase、对象 MatchByte、对象 SearchFormat、对象 替换格式)
【问题讨论】:
标签: c# asp.net excel excel-interop