2013-03-21 18 views
6

मैं एक कंसोल एप्लिकेशन पर काम कर रहा हूं जो xlsx फ़ाइल को xls फ़ाइल में परिवर्तित करेगा। मैं इसे xlsx से xls तक पुनर्नामित नहीं करना चाहता क्योंकि यह एक्सेल 2007 में खोला जाएगा लेकिन इसे एक्सेल 2003 में दूषित फ़ाइल के रूप में दिखाया जाएगा। एक तरीका ढूंढना जो दस्तावेज़ लोड करेगा और फिर इसे xls प्रारूप के रूप में सहेजा जाएगा ।सी # Excel 2007 (xlsx) फ़ाइल को Excel 2003 (xls) फ़ाइल में कनवर्ट करें

मेरे वर्तमान कोड बस आप चाहते हैं XlFileFormat.xlExcel8 xls

string fileName = @"C:\Users\L-3\Desktop\my.xlsx"; 
string svfileName = @"C:\Users\L-3\Desktop\ssc\my1.xls"; 
object oMissing = Type.Missing; 
var app = new Microsoft.Office.Interop.Excel.Application(); 
var wb = app.Workbooks.Open(fileName, oMissing, oMissing, 
       oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing); 
wb.SaveAs(svfileName, XlFileFormat.xlOpenXMLTemplate, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 
app.Quit(); 

उत्तर

1

XlFileFormat.xlExcel9795 से बचाने के लिए प्रयास करें। आप XlFileFormat.xlWorkbookNormal

+1

यह फ़ाइल को Excel 95-97 प्रारूप के रूप में सहेज लेगा, यदि आप किसी भी विशेषताओं का उपयोग कर रहे हैं> = 2003, वे काम नहीं करेंगे! – JMK

+0

जो एक अपवाद फेंकता है: "HRESULT से अपवाद: 0x800A03EC" – m2pathan

4

आपका enum गलत है, बजाय XlFileFormat.xlOpenXMLTemplate को xlsx का नाम बदलता है, तो आपके कोड तो जैसा होगा:

string fileName = @"C:\Users\L-3\Desktop\my.xlsx"; 
string svfileName = @"C:\Users\L-3\Desktop\ssc\my1.xls"; 
object oMissing = Type.Missing; 
var app = new Microsoft.Office.Interop.Excel.Application(); 
var wb = app.Workbooks.Open(fileName, oMissing, oMissing, 
       oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing); 
wb.SaveAs(svfileName, XlFileFormat.xlExcel8, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 
app.Quit(); 

अधिक जानकारी here

+0

का उपयोग भी अपवाद फेंक सकते हैं: 'HRESULT: 0x800A03EC' से अपवाद कोमेक्सप्शन अपरिवर्तित किया गया था। क्या यह आपके अंत में काम कर रहा है? –

+0

मुझे लगता है कि xlExcel8 समस्या पैदा कर रहा है। –

+1

मैंने अभी उपरोक्त कोड का परीक्षण करने के लिए समय निकाला है, यह मेरे कंप्यूटर पर पूरी तरह से काम कर रहा है। – JMK

0

मैं here से निम्नलिखित स्निपेट मिल गया है:

// Create new XLSX file. 
var xlsxFile = new ExcelFile(); 

// Load data from XLSX file. 
xlsxFile.LoadXlsx(fileName + ".xls", XlsxOptions.PreserveMakeCopy); 

// Save XLSX file to XLS file. 
xlsxFile.SaveXls(fileName + ".xls"); 

यह this component उपयोग करता है।

+0

इससे मेरे एप्लिकेशन में निर्भरता बढ़ जाएगी। ओ.ओ –

0

मुझे लगता है कि इस उत्तर के लिए आप देख रहे हैं:

What is the correct `XlFileFormat` enumeration for Excel 97-2003

आप फ़ाइल स्वरूप xlOpenXMLTemplate उपयोग कर रहे हैं। इसके बजाय xlExcel8 का उपयोग करने का प्रयास करें? यह 97-2003 कार्यपुस्तिकाओं के लिए फ़ाइल प्रारूप होना चाहिए।

+0

यह एक कॉम अपवाद फेंक दिया। क्या आप एक कंसोल बना सकते हैं और फिर से जांच सकते हैं? –

+0

दुर्भाग्य से ऐसा करने की स्थिति में मैं नहीं हूं। मैंने देखा कि @ जेएमके का कहना है कि यह काम कर रहा है। मुझे यकीन है कि पहले से मौजूद फ़ाइलफॉर्मेट, 'xlOpenXMLTemplate' गलत है। 'SaveAs' विधि को एक्सेल 97-2003 वर्कबुक (.xls) के लिए सही फ़ाइल स्वरूप गणना का उपयोग करना चाहिए, जो xlExcel8 होना चाहिए। –

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