2009-09-02 34 views
29

Tôi bị nhầm lẫn là địa ngục với tất cả các cách bazillion để đọc/ghi/tạo các tệp excel. VSTO, OLEDB, v.v., nhưng tất cả chúng đều là dường như để yêu cầu phải cài đặt văn phòng. Đây là tình huống của tôi: Tôi cần phát triển một ứng dụng sẽ lấy một tệp excel làm đầu vào, thực hiện một số phép tính và tạo một tệp excel mới về cơ bản sẽ là một sửa đổi của tệp excel đầu tiên. Tất cả với ràng buộc rằng máy chạy điều này có thể không có văn phòng được cài đặt. (Đừng hỏi tại sao ...)Làm thế nào tôi có thể lập trình tạo, đọc, viết một excel mà không cần cài đặt văn phòng?

Tôi cần hỗ trợ tất cả định dạng excel. Ân điển tiết kiệm duy nhất là bản thân các định dạng bảng tính thực sự đơn giản. Chỉ cần một loạt các cột và giá trị, không có gì lạ mắt. Và tiếc là không có CSV khi người dùng cuối có thể thậm chí không biết tệp CSV là gì.

+0

Bạn cần hỗ trợ những phiên bản nào? –

+0

Điều này tùy thuộc vào các tính năng của MS Excel bạn cần. Bạn có cần bất kỳ tính năng ưa thích nào không? – voyager

+3

Bạn cần phải chịu đựng "các tính năng bị mất" như thế nào. Ví dụ: Bạn có cần duy trì công thức, bảng Pivot, biểu đồ, v.v. không? Hay chỉ là dữ liệu trong các tệp này? –

Trả lời

47

viết excel của bạn ở định dạng bảng HTML:

<html> 
<body> 
    <table> 
    <tr> 
    <td style="background-color:#acc3ff">Cell1</td> 
    <td style="font-weight:bold">Cell2</td> 
    </tr> 
    </table> 
</body> 
</html> 

và cung cấp cho tập tin của bạn một phần mở rộng xls. Excel sẽ tự động chuyển đổi nó

+22

bạn đang đùa tôi. – eviljack

+3

Tôi đã sử dụng phương pháp này nhiều lần, đơn giản, hoạt động tốt. Nhưng trong trường hợp của các ứng dụng web, chỉ cần đặt kiểu nội dung/loại mime thành excel (không thể nhớ chính xác loại mime ngoài đỉnh đầu của tôi) –

+1

Và, tùy thuộc vào phiên bản excel của bạn, nó cũng thường chọn định dạng. Bolded cell table? Excel mang nó qua .. Màu nền? bản sao quá ... –

6

đọc và ghi tệp csv thay thế. Excel đọc chúng tốt và dễ sử dụng hơn. Nếu bạn cần làm việc với các tệp .xls thì hãy thử hỗ trợ OpenOffice cũng như Excel. OpenOffice có thể đọc và ghi các tập tin excel.

+1

API OpenOffice có thể rất hữu ích ở đây: http://api.openoffice.org/ –

+2

Vấn đề ở đây là 0 định dạng. –

8

Nếu không có Office được cài đặt, bạn sẽ cần một cái gì đó được thiết kế để hiểu định dạng tệp nhị phân Excel (trừ khi bạn chỉ muốn mở tệp Office 2007 .xlsx).

Điều tốt nhất tôi đã tìm thấy (và tôi sử dụng) là SpreadsheetGear, ngoài việc là bản địa .NET, nhanh hơn và ổn định hơn nhiều so với các giải pháp COM/OLE (mà tôi đã sử dụng trước đây)

0

Tệp Excel có định dạng độc quyền, vì vậy (afaik), bạn sẽ không thể thực hiện việc này mà không có sẵn nội dung văn phòng. Một số công cụ của bên thứ ba tồn tại (có lẽ là giấy phép định dạng từ MS?) Nhưng tôi đã không sử dụng chúng bản thân mình để bình luận về tính hữu ích của họ.

Tôi cho rằng bạn không thể kiểm soát định dạng tệp cơ sở, tức là định dạng CSV hoặc XML đơn giản sẽ không thể thực hiện được?

0

Tôi đã từng sử dụng một thư viện rất hay gọi là CarlosAg, sử dụng định dạng XML của Excel. Thật tuyệt vời (và Excel nhận dạng được định dạng này) và cũng cực kỳ nhanh. Kiểm tra xem nó ra here.

Ồ, như một lưu ý phụ, chúng tôi đã từng sử dụng điều này vì cùng một lý do bạn cần. Các máy chủ đã tạo các tệp này không thể cài đặt Excel.

0

Nếu bạn không thể làm việc với tệp CSV theo đề xuất của @RHicke và giả sử bạn đang làm việc trên ứng dụng web, vì ứng dụng dành cho máy tính để bàn sẽ được đảm bảo cài đặt XL theo yêu cầu.

Tôi muốn nói, tạo ra ứng dụng xử lý của bạn như một webservice, và xây dựng một XL addin đó sẽ tương tác với webservice của bạn trực tiếp từ XL.

2

Bạn có xem xét số lượng tỷ lệ bazillion và một: sử dụng Open XML SDK? Bạn có thể giữ lại phong cách và tinh chỉnh nó theo ý thích của bạn. Bất cứ điều gì bạn có thể làm trong một tập tin thực tế có thể đạt được theo chương trình.SDK đi kèm với một công cụ gọi là Document Reflector cho thấy XML cơ sở và thậm chí hiển thị các câu lệnh LINQ có thể được sử dụng để tạo ra chúng. Đó là chìa khóa để chơi xung quanh với nó, nhìn thấy những thay đổi được thực hiện như thế nào, sau đó tạo lại mã đó.

Chỉ báo trước là điều này sẽ hoạt động đối với các định dạng dựa trên XML mới (* .xlsx) chứ không phải các phiên bản cũ hơn. Có một đường cong học tập nhỏ nhưng nhiều tài liệu hơn đang được thực hiện trên blog và các trang web khác.

1

Tệp Excel XLSX "chỉ" các tệp XML - chính xác hơn các tệp ZIP chứa một số tệp XML. Chỉ cần đổi tên tệp Excel Test.xslx thành Test.zip và mở tệp đó bằng chương trình ZIP ưa thích của bạn. Các lược đồ XML, afaik, được chuẩn hóa và có sẵn. Nhưng tôi nghĩ rằng nó có thể không dễ dàng để thao tác chúng chỉ bằng cách sử dụng các công cụ và khung công tác xử lý XML nguyên thủy.

0

Đối với tệp XLSX, hãy xem sử dụng http://www.codeplex.com/ExcelPackage. Nếu không, một số giải pháp của bên thứ ba có trả tiền sẽ xuất hiện ở đó, giống như giải pháp mà David đề xuất.

1

Nếu chi phí không phải là vấn đề, tôi khuyên bạn nên tìm trong sản phẩm Excel của Aspose. Tôi sử dụng sản phẩm Word của họ và tôi đã hài lòng.

Aspose.Cells

+2

Sau khi thử một số giải pháp thay thế miễn phí, nhóm của tôi cũng quyết định sử dụng Aspose.Cells. Nó rất trực quan để sử dụng và mã dễ bảo trì. – dawntrader

0

tôi có thể hiểu được những yêu cầu của việc không có trụ được cài đặt trên một máy chủ. Có nhiều thư viện như aspose đang có sẵn, một số trong số đó yêu cầu giấy phép. Nếu bạn đang nhắm mục tiêu định dạng MS Excel, thì thư viện gốc, khả năng tương tác, nhà cung cấp dữ liệu ACE OLEDB, từ Microsoft có sẵn mà bạn có thể cài đặt trên máy và bắt đầu đọc, viết theo chương trình. Bạn cần phải xác định một chuỗi kết nối và lệnh theo nhu cầu của bạn. (Ref: This article @yoursandmyideas) nói về việc sử dụng thư viện này cùng với thông tin thiết lập và khắc phục sự cố.

Các vấn đề liên quan