2009-04-24 6 views
10

Tôi có thể Mở và Ghi vào tệp excel, nhưng khi tôi cố gắng lưu tệp bằng cách chuyển đường dẫn đến nó, thao tác lưu sẽ nhắc bằng hộp thoại Lưu. Tôi đã chờ đợi nó để quitely Lưu file vào đường dẫn cụ thểVấn đề C# và Excel Interop, Lưu tệp excel không mịn

Mã này là như sau:

excelApp.Save(exportToDirectory); 
excelApp.Quit(); 

nơi, exportToDirectory là: "C: \ file \ strings.xlsx".

PS: Tôi đã kiểm tra với phiên bản excel và vấn đề tương tự.

Cảm ơn

Trả lời

15

Bạn cần phải sử dụng Workbook.SaveAs thay vì Application.Save:

Excel.Application app = new Excel.Application(); 
Excel.Workbook wb = app.Workbooks.Add(missing); 
... 
wb.SaveAs(@"C:\temp\test.xlsx", missing, missing, missing, missing, 
      missing, Excel.XlSaveAsAccessMode.xlExclusive, 
      missing, missing, missing, missing, missing); 
+0

Bất kỳ ý tưởng gì giá trị bằng số cho Excel.XlSaveAsAccessMode.xlExclusive là? Tôi cần phải vượt qua điều này để chức năng này trong một tập tin kịch bản cửa sổ. – MrVimes

+1

@MrVimes Hoàn toàn muộn để đảng cho bạn, tuy nhiên ở đây họ là để tham khảo sau: 'public enum XlSaveAsAccessMode { xlNoChange = 1, xlShared = 2, xlExclusive = 3 }' – killercowuk

2

Vâng, đây là cách Microsoft thực hiện nó:

// Save the Workbook and quit Excel. 
m_objBook.SaveAs(m_strSampleFolder + "Book1.xls", m_objOpt, m_objOpt, 
    m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange, 
    m_objOpt, m_objOpt, m_objOpt, m_objOpt); 
m_objBook.Close(false, m_objOpt, m_objOpt); 
m_objExcel.Quit(); 

Xem một trong KB article s của họ.

15

Thiết lập các thuộc tính sau đây cũng có thể giúp đỡ:

excelApp.DisplayAlerts = false; 
excelApp.ScreenUpdating = false; 
excelApp.Visible = false; 
excelApp.UserControl = false; 
excelApp.Interactive = false; 
+0

hữu ích để làm điều này bất kể – AndyM

+0

+ 1 chắc chắn hữu ích – Amro

+0

Tôi cố gắng rất nhiều giải pháp nhưng đây là một trong những chỉ hoạt động như nó nên! Rất hữu dụng! Tks !! –

1

ExcelApp.Interactive = false ngăn chặn bất kỳ hộp thoại.

excelApp.ActiveWorkbook.SaveAs(exportDirectory)

1

tôi thấy excelApp.ActiveWorkbook.save() mà có thể lưu các tập tin, sau đó tôi có thể từ bỏ mà không cho yêu cầu.

2

chỉ cần đặt các ActiveWorkbook.Savedtài sản để đúng và bạn có thể Quit() mà không cần bất kỳ hộp Dialog;

1

myBook.Saved = true;
myBook.SaveCopyAs(xlsFileName);
myBook.Close(null, null, null);
myExcel.Workbooks.Close();
myExcel.Quit();

+0

Điều này phù hợp nhất với tôi và không phải là câu trả lời được đánh giá cao nhất. Những gì tôi thích về giải pháp này là nó không ảnh hưởng đến các tệp Excel khác do người dùng mở. – ytoledano