2012-09-11 38 views

回答

0

我发现文章,解释如何保存活动工作表在VB.NET:

Sub test() 
    ActiveSheet.Copy 
    ActiveWorkbook.SaveAs Filename:="C:\MyFolder\MySubFolder\Test.xls" 
    ActiveWorkbook.Close 
End Sub 

但是你可以尝试在C#这样的逻辑,切换主动片和保存每个单独

这应该将它们保存在单独的工作簿...

Sub test() 

Dim iNoSheets As Integer 
Dim i As Integer 

iNoSheets = Worksheets.Count 

For i = 1 To iNoSheets 
Worksheets(i).Activate 
ActiveSheet.Copy 
ActiveWorkbook.SaveAs Filename:="C:\Test" & i & ".xls" 
ActiveWorkbook.Close 
Next 

End Sub 
在C#

现在:

public void SaveSheets() 
{ 
for(int i = 0; i < Worksheets.Count; i++) 
{ 
Worksheets[i].Activate(); 
ActiveSheet.Copy(); 
ActiveWorkbook.SaveAs(string.Format(@"C:\sheet{0}.xlsx",i)); 
ActiveWorkbook.Close(); 
} 
} 
+1

你有没有在你的类中定义ActiveSheet?和工作表?和ActiveWorkbook?无论如何,这将保存n整个工作簿的副本... –

+0

谢谢,它的工作原理 – Alexander

1

您需要将活动工作表分配给Microsoft.Office.Interop.Excel.Worksheet对象,然后只需调用这个对象的像这样的SaveAs方法:

using System.Runtime.InteropServices; 
using Excel = Microsoft.Office.Interop.Excel; 

namespace ConsoleApplication2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Excel.Application ap = new Excel.Application(); 
      Excel.Workbook wb = ap.Workbooks.Open(@"C:\whatever.xlsx"); 
      Excel.Worksheet ws = wb.ActiveSheet; 

      ws.SaveAs(@"C:\somethingelse.xlsx"); 

      ap.Workbooks.Close(); 
      Marshal.ReleaseComObject(ap); 
     } 
    } 
} 
相关问题