2011-11-09 39 views
9

Tôi đang cố gắng tạo tệp Excel có tương tác C# COM nhưng dường như nó tạo theo mặc định với 3 trang thay vì trống hoặc chỉ một trang. gì là cần thiết để tạo ra nó rỗng hoặc chỉ với một:C# Tạo sổ làm việc Excel với 1 trang tính theo mặc định

Excel.Application xl = null; 
Excel._Workbook wb = null; 

// Create a new instance of Excel from scratch 
xl = new Excel.Application(); 
xl.Visible = true;  
wb = (Excel._Workbook)(xl.Workbooks.Add(Missing.Value)); 

wb.SaveAs(@"C:\a.xls", Excel.XlFileFormat.xlWorkbookNormal, 
null, null, false, false, Excel.XlSaveAsAccessMode.xlShared, 
false, false, null, null, null); 
+2

Tôi nghĩ rằng đây là hành vi mặc định trong Excel. Nếu bạn mở excel và tạo một tài liệu mới, nó có ba trang tính. Có lẽ bạn chỉ cần xóa trang tính hai và ba. –

+0

Hoặc bạn có thể thử sức trên một thư viện NPOI đơn giản nhưng dễ hiểu http://code.google.com/p/npoi/ mang đến cho bạn rất nhiều sự linh hoạt đặc biệt cho các tính năng cơ bản đến trung gian excel. Nếu đầu ra của bạn chỉ cần được mở từ Office 2010 trở lên, bạn cũng có thể xem xét OpenXML. COM Interop có khả năng cung cấp cho bạn rất nhiều vấn đề trong các ứng dụng khách không giám sát, không tương tác. Xem http://support.microsoft.com/kb/257757 –

Trả lời

20

Hãy nhìn vào lời giải thích của Workbooks.Add Method MSDN của.

  1. Hãy thử Workbooks.Add(XlWBATemplate.xlWBATWorksheet), hoặc
  2. Xem nếu bạn có thể thiết lập các thuộc tính để xl.SheetsInNewWorkbook 0 hoặc 1.

tôi đã đi trước và xác minh này. Đây là mã:

using Microsoft.Office.Interop.Excel; 
using System.Reflection; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Application xl = null; 
      _Workbook wb = null; 

      // Option 1 
      xl = new Application(); 
      xl.Visible = true; 
      wb = (_Workbook)(xl.Workbooks.Add(XlWBATemplate.xlWBATWorksheet)); 

      // Option 2 
      xl = new Application(); 
      xl.SheetsInNewWorkbook = 1; 
      xl.Visible = true; 
      wb = (_Workbook)(xl.Workbooks.Add(Missing.Value)); 

     } 
    } 
} 
+3

Tôi đã sử dụng tùy chọn 2: "xl.SheetsInNewWorkbook = 1" và điều đó giải quyết được sự cố. – Moti

+0

@Moti, Rất vui được trợ giúp. Thấy mới của bạn ở đây, nếu câu trả lời là chính xác, đó là phong tục để chấp nhận câu trả lời (kiểm tra dấu kiểm). Ngoài ra câu trả lời hữu ích cũng có thể được bỏ phiếu (mũi tên lên). :) – Matt

+0

Dường như tôi không thể trả lời câu hỏi trong ít nhất 8 giờ vì tôi có "• Người dùng có ít hơn 100 danh tiếng không thể trả lời câu hỏi của họ trong vòng 8 giờ sau khi yêu cầu. Bạn có thể tự trả lời sau 7 giờ. Cho đến lúc đó, vui lòng sử dụng nhận xét hoặc chỉnh sửa câu hỏi của bạn thay thế ". – Moti

2
Excel.Application xl = null; 
Excel._Workbook wb = null; 

xl = new Excel.Application(); 
xl.SheetsInNewWorkbook = 1; 
xl.Visible = true; 

wb = (_Workbook)(xl.Workbooks.Add(Missing.Value)); 
Các vấn đề liên quan