2013-03-21 33 views
6

xlsxファイルをxlsファイルに変換するコンソールアプリケーションで作業しています。 Excel 2007で開かれるのでxlsxからxlsに名前を変更したくないのですが、Excel 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
あなたの列挙型が間違っている

、代わりの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」COMEXceptionが処理されませんでした。それはあなたの最後に働いていますか? –

+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

これは私のアプリケーションに依存関係を追加します。 o.O –

0

私は、これはあなたが探している答えを持っていると思う:あなたはファイル形式xlOpenXMLTemplateを使用している

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

。代わりにxlExcel8をお試しください。これは97-2003ワークブックのファイル形式でなければなりません。

+0

それはcom例外を投げた。コンソールを作成して再度確認できますか? –

+0

私は残念なことにそれを行う立場にいません。私は@JMKがこれが働いていることに気付きます。私はあなたが以前に書いたファイル 'xlOpenXMLTemplate'が間違っていると確信しています。 'SaveAs'メソッドは、Excel 97-2003ワークブック(.xls)(xlExcel8でなければなりません)の正しいファイル形式の列挙を使用する必要があります。 –

関連する問題