2011-08-10 11 views
11

मुझे एक कंसोल एप्लिकेशन बनाना है जो Excel को डेटासेट निर्यात करता है। मैंने googling और इस विषय पर पोस्ट देखने की कोशिश की है, लेकिन वास्तव में वह नहीं मिला है जो मैं खोज रहा हूं। समस्या यह है कि इसे सहेजने वाली विंडो को पॉप अप नहीं करना चाहिए, इसे स्वचालित रूप से एक्सेल फ़ाइल बनाना चाहिए। अब तक मेरे पास निम्न कोड है, लेकिन मुझे नहीं पता कि इसे स्वचालित रूप से कैसे सहेजना है। किसी भी मदद की सराहना करेंगे।एक्सेल इंटरऑप: सहेजने के बिना कार्यपुस्तिका को सहेजना

public static void CreateWorkbook(DataSet ds, String path) 
    { 
     int rowindex = 0; 
     int columnindex = 0; 

     Microsoft.Office.Interop.Excel.Application wapp = new Microsoft.Office.Interop.Excel.Application(); 
     Microsoft.Office.Interop.Excel.Worksheet wsheet; 
     Microsoft.Office.Interop.Excel.Workbook wbook; 

     wapp.Visible = false; 

     wbook = wapp.Workbooks.Add(true); 
     wsheet = (Worksheet)wbook.ActiveSheet; 

     try 
     { 
      for (int i = 0; i < ds.Tables[0].Columns.Count; i++) 
      { 
       wsheet.Cells[1, i + 1] = ds.Tables[0].Columns[i].ColumnName; 

      } 

      foreach (DataRow row in ds.Tables[0].Rows) 
      { 
       rowindex++; 
       columnindex = 0; 
       foreach (DataColumn col in ds.Tables[0].Columns) 
       { 
        columnindex++; 
        wsheet.Cells[rowindex + 1, columnindex] = row[col.ColumnName]; 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      String err = ex.Message; 
     } 
     wapp.UserControl = true; 
    } 

उत्तर

24
तर्कों की

सभी देखें WorkBook.SaveAs() लिए वैकल्पिक हैं, लेकिन तुम सिर्फ उनमें से ज्यादातर के लिए Type.Missing उपयोग कर सकते हैं यदि आप चाहते हैं।

wbook.SaveAs("c:\\temp\\blah", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing, 
      false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 
wbook.Close(); 

ध्यान दें कि मैं फाइल एक्सटेंशन शामिल नहीं किया था, एक्सेल आप के लिए सेट हो जाएगा कि: जैसे

ठेठ कॉल लगेगा।

http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.workbook.saveas(v=VS.100).aspx प्रत्येक तर्क का वर्णन करता है।

+0

धन्यवाद चार्ल्स, जो काम करता है :) – ha1ogen

5

कार्यपुस्तिका के SaveAs विधि को कॉल करने का प्रयास करें। पैरामीटर के बहुत से, सभी पैरामीटर पर Type.Missing पास करने का प्रयास करें लेकिन पहले (फ़ाइल का नाम)।

+0

फिर मैं करने की कोशिश की लेकिन यह इतने सारे लेता है: मापदंडों शून्य SaveAs (आपत्ति फ़ाइल का नाम, वस्तु fileformat, वस्तु पासवर्ड, WriteResPassword वस्तु, वस्तु ReadOnlyRecommended, आपत्ति CreateBackup, XlSaveAsAccessMode AccessMode, आपत्ति ConflictResolution, आपत्ति AddToMru, आपत्ति TextCodepage, आपत्ति TextVisualLayout , ऑब्जेक्ट स्थानीय); कि मुझे नहीं पता कि इसका उपयोग कैसे करें ... – ha1ogen

+0

मुझे लगता है कि केवल पहले दो अनिवार्य हैं, अन्य सभी को अनुपलब्ध पैरामीटर के रूप में उपयोग किया जा सकता है। –

+0

तो "ऑब्जेक्ट फ़ाइल नाम" क्या होगा? क्या आप मुझे एक उदाहरण दे सकते हैं – ha1ogen

2

स्वचालन के बजाए दस्तावेज़ उत्पन्न करने के लिए open xml sdk का उपयोग करें; यह बहुत अधिक विश्वसनीय है।

+0

क्या आप प्रतिक्रिया और समाधान के बारे में अधिक जानकारी दे सकते हैं –

2
wapp.DisplayAlerts = false; 

false को Application.DisplayAlerts संपत्ति की स्थापना अपने कार्यपुस्तिका के सभी के सभी अलर्ट प्रदर्शित करना बंद कर देगा।

2

DisplayAlerts प्रॉपर्टी का उपयोग करें। यह बहुत सरल और तेज़ है।

private void SaveAs(Excel.Workbook WorkBook, string FileName) 
    { 
     m_Saving = true; 
     try 
     { 
      if (Global.CreatingCopy) 
       this.ExcelApp.DisplayAlerts = false; 

      WorkBook.SaveAs(FileName); 
     } 
     finally 
     { 
      m_Saving = false; 
      if (this.ExcelApp.DisplayAlerts == false) 
       this.ExcelApp.DisplayAlerts = true; 
     } 
    } 

जब आप फ़ाइल को सहेजने के लिए एक्सेल को फ़ाइल की तरह परिभाषित करते हैं तो कभी भी फ़ाइल को परिभाषित न करें। क्योंकि यह संभव है कि प्रारूप बदल दिया जाएगा।

यदि मूल दस्तावेज़ .xls था और वर्तमान उपयोगकर्ता का कार्यालय 2013 है, तो इसका डिफ़ॉल्ट प्रारूप .xlsx है और फिर एक्सेल फ़ाइल को .xlsx में परिवर्तित कर देगा और उपयोगकर्ताओं के पास Excel 2010 या बेहतर नहीं है फ़ाइल को खोलें ।

4
m_xlApp.DisplayAlerts = false; 

// Quit Excel and clean up. 
m_xlWorkbook.SaveAs(Filename: m_xlFilePath, FileFormat: excelFileExtension, 
Password: false, ReadOnlyRecommended: XlSaveAsAccessMode.xlNoChange, 
ConflictResolution: XlSaveConflictResolution.xlLocalSessionChanges); 

m_xlWorkbook.Close(); 

XlSaveConflictResolution.xlLocalSessionChanges

लिए संघर्ष के संकल्प जोड़ें और गलत पर आवेदन के DisplayAlerts गुण सेट तो खिड़की नहीं दिखाया जाएगा।

अधिक जानकारी के लिए https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xlsaveconflictresolution.aspx देखें।

संबंधित मुद्दे