2013-03-21 53 views
6

Tôi đang làm việc trên ứng dụng bảng điều khiển sẽ chuyển đổi tệp xlsx thành tệp xls. Tôi không muốn đổi tên nó từ xlsx thành xls vì nó sẽ được mở trong excel 2007 nhưng nó sẽ được hiển thị dưới dạng tệp bị hỏng trong excel 2003. Tìm cách tải tài liệu và sau đó nó sẽ được lưu thành định dạng xls .C# Chuyển đổi tệp Excel 2007 (xlsx) sang tệp Excel 2003 (xls)

mã hiện tại của tôi Chỉ cần đổi tên các xlsx đến 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(); 

Trả lời

1

Hãy thử lưu với XlFileFormat.xlExcel9795. Bạn cũng có thể sử dụng XlFileFormat.xlWorkbookNormal

+1

Điều này sẽ lưu tệp dưới dạng định dạng Excel 95-97, nếu bạn đang sử dụng bất kỳ tính năng nào được giới thiệu> = 2003, chúng sẽ không hoạt động! – JMK

+0

Điều đó ném một ngoại lệ: "Ngoại lệ từ HRESULT: 0x800A03EC" – m2pathan

4

enum của bạn là sai, thay vì XlFileFormat.xlOpenXMLTemplate bạn muốn XlFileFormat.xlExcel8, do đó, mã của bạn sẽ như thế nào vậy:

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(); 

Thông tin thêm here.

+0

Điều đó ném một ngoại lệ: 'Ngoại lệ từ HRESULT: 0x800A03EC' COMEXception đã bị hủy. nó có hoạt động ở cuối bạn không? –

+0

Tôi nghĩ rằng xlExcel8 đang tạo ra vấn đề. –

+1

Tôi chỉ mất thời gian để kiểm tra mã ở trên, nó hoạt động hoàn hảo trên máy tính của tôi. – JMK

0

tôi đã tìm thấy đoạn sau đây từ 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"); 

Nó sử dụng this component.

+0

Điều đó sẽ thêm sự phụ thuộc vào ứng dụng của tôi. o.O –

0

Tôi nghĩ rằng đây có câu trả lời bạn đang tìm kiếm:

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

Bạn đang sử dụng định dạng file xlOpenXMLTemplate. Hãy thử sử dụng xlExcel8 để thay thế? Đó phải là định dạng tệp cho 97-2003 Sổ làm việc.

+0

Nó đã ném một ngoại lệ com. Bạn có thể tạo bảng điều khiển và kiểm tra lại không? –

+0

Tôi không ở vị trí nào để làm điều đó thật không may. Tôi nhận thấy @JMK nói rằng điều này đang hoạt động. Tôi chắc chắn rằng các fileformat bạn đã từng, 'xlOpenXMLTemplate' là không chính xác. Phương thức 'SaveAs' nên sử dụng kiểu liệt kê định dạng tệp chính xác cho Sổ làm việc Excel 97-2003 (.xls), phải là xlExcel8. –