2009-12-14 93 views
0

使用Excel COM库将文件保存回SharePoint时出现问题。 我打开文件,但它打开为'xlviewer.xlsx',所以我假设我需要覆盖原始文件。 (我删除了try/catch语句做一些错误处理。)当我这样做,我得到这个错误:“指数是指超越列表的末尾”(在行错误:42“另存为表”)错误 - 索引超出列表末尾

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Excel = Microsoft.Office.Interop.Excel; 
using System.Reflection; 
using System.IO; 

namespace CopyInteractionIds 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Excel.Application oApp; 
      Excel._Workbook oWbFrom; 
      Excel._Workbook oWbTo; 
      Excel._Worksheet oWsFrom; 
      Excel._Worksheet oWsTo; 
      Excel.Range oRngFrom; 
      Excel.Range oRngTo; 

      //try 
      //{ 
       oApp = new Excel.Application(); 
       oApp.Visible = true; 
       Console.WriteLine("Opening source workbook"); 
       oWbFrom = (Excel._Workbook)(oApp.Workbooks.Open(@"path to my source wb" 
        , Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value 
        , Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value)); 
       Console.WriteLine("Opening edited workbook"); 
       oWbTo = (Excel._Workbook)(oApp.Workbooks.Open(@"https://path to my out wb" 
        , Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value 
        , Missing.Value, true, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value)); 
       Console.WriteLine("Copying data"); 
       oWsFrom = (Excel._Worksheet)oWbFrom.Worksheets.get_Item("Interaction Number Lookup"); 
       oWsTo = (Excel._Worksheet)oWbTo.Worksheets.get_Item("Interaction Number Lookup"); 
       oRngFrom = oWsFrom.get_Range("=OFFSET($A$1,0,0,COUNTA($A:$A),COUNTA($1:$1))",Missing.Value); 
       oWsTo.get_Range("=OFFSET($A$1,0,0,COUNTA($A:$A),COUNTA($1:$1))", Missing.Value).Clear(); 
       oRngTo = oWsTo.get_Range("A1",Missing.Value); 
       oRngFrom.Copy(oRngTo); 
       Console.WriteLine("Saving edited file"); 
       oWbTo.SaveAs(@"path to out file" 
        , Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value 
        ,Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, Missing.Value 
        , Missing.Value, Missing.Value, Missing.Value, Missing.Value); 
       oWbTo.Close(false,Missing.Value,Missing.Value); 
       oWbFrom.Close(false, Missing.Value, Missing.Value); 
       oApp.Quit(); 
      //} 
      //catch(Exception ex) 
      //{ 
      // Console.WriteLine("Unable to process job: {0}",ex.Message); 
      //} 

     } 
    } 
} 
+2

它将帮助确切知道哪一行引发异常。 – 2009-12-14 20:26:43

+0

匈牙利语=不好,你曾经声明的每个变量都有一个o在它前面吗?! 哪一行会抛出? – 2009-12-14 20:28:01

+0

匈牙利语= vba习惯哈哈 – 2009-12-14 20:34:13

回答

0

别人打开文件。

1

我有类似的问题,原来我的文件被“损坏”。打开它们,使用Excel修复它们,然后覆盖损坏的文件似乎对我有用。

相关问题