2010-08-18 45 views
19

Tôi đã tìm kiếm trong google nhưng dường như tôi không tìm cách đọc tệp Excel từ Objective-C. Các câu trả lời duy nhất tôi tìm thấy là đầu tiên chuyển đổi sang CSV và sau đó đọc dưới dạng tệp văn bản, nhưng tôi không muốn điều đó.Đọc dữ liệu từ tệp Excel trong Objective-C (iPhone)

Tôi biết phải có cách, trong khi tôi sử dụng nhiều lần các mô-đun PHP để đọc/ghi các tệp Excel, vì vậy tôi giả sử cũng có thư viện C để thực hiện điều đó (sau đó có thể được sử dụng trong Mục tiêu-C/Ứng dụng iPhone)

Vậy ... có ai biết thư viện như vậy mà tôi có thể sử dụng trên iPhone không?

+0

cũng trông giống như câu trả lời sau là "không, không có cách nào" các liên kết dưới đây sẽ cung cấp cho người có đủ thời gian dành cho một khởi đầu tuyệt vời mặc dù –

+0

Trên bình luận không còn hợp lệ - một câu trả lời thực sự đã được cung cấp dưới đây :-) –

Trả lời

17

Thực ra, có một dự án như vậy - được gọi là libxls trên nguồn giả mạo. Có một giao diện lớp ObjectiveC cho dự án là tốt. Với dự án này, bạn có thể mở một tệp excel và đọc hầu hết thông tin trong đó (các giá trị ô cũng như các thuộc tính của tệp).

Ngoài ra còn có iOS Objective C interface vào thư viện.

+1

"Khuôn khổ ObjectiveC, hoạt động trên cả Mac và iOS" chính xác là những gì tôi đang nhìn lại ... Câu trả lời hay nhất –

+1

Bạn có thể đề xuất nơi tôi sai không? tôi đã tải về và biên dịch xlslib và thêm vào ứng dụng của tôi nhưng nó cho tôi lỗi như dưới đây cho u16string trong định nghĩa hàm trong khi khai báo hàm là okay.format.cpp: 122: 11: Định nghĩa ngoài dòng 'format_t' không khớp bất kỳ khai báo nào trong 'xlslib_core :: format_t' và format.cpp: 122: 52: Tham chiếu đến 'u16string' là mơ hồ và định dạng.cpp: 129: 1: Dự kiến ​​không đủ tiêu chuẩn-id – Hindu

+1

Có hai libs - libxls để đọc các tệp excel (nó có khung objc) và xlslib để viết các tệp excel (chưa được chuyển sang iOS nhưng làm việc trên nó). Libxl có vẻ đẹp khi bạn có thể chỉnh sửa nếu cần. –

19

Tôi nghĩ thư viện PHP sử dụng định dạng Office OpenXML ... Thư viện tốt nhất để đọc/ghi tệp Excel nhị phân (không chạy Excel và gọi nó qua COM) tôi đã sử dụng là Apache POI - http://poi.apache.org/, nhưng đây là Java. Bạn có thể cố gắng sử dụng GCJ để làm việc đó trên iPhone, nhưng ai biết được Apple sẽ làm gì. Bạn có thể tự chuyển toàn bộ nội dung sang Obj-C/C++ Tôi đoán ...

Có một vài thư viện C/C++ thực hiện một tập con giới hạn, nhưng chúng có thể không đáng tin cậy hoặc dễ sử dụng.

http://xlslib.sourceforge.net/index.php - LGPL

http://www.libxl.com/ - Thương mại, $ 199, ai biết nếu họ sẽ cung cấp cho bạn nguồn cho rằng để biên dịch vào ứng dụng của bạn.

http://www.codeproject.com/KB/office/ExcelFormat.aspx - nguồn C++, giấy phép vô cùng không rõ ràng như mọi thứ trong dự án mã. Ai biết.

Một tùy chọn khác là cố gắng trích xuất mã từ một đối thủ cạnh tranh đọc excel nguồn mở. Open Office - http://www.openoffice.org/ - có khả năng là một cơn ác mộng hoàn toàn, Gnumeric có lẽ là một đặt cược tốt hơn. Mã Excel là ở đây - http://git.gnome.org/browse/gnumeric/tree/plugins/excel - nó có khả năng cần rất nhiều rắc rối để làm cho nó hoạt động bên ngoài Gnumeric. KSpread có mã tương tự ở đây: http://websvn.kde.org/trunk/koffice/filters/kspread/excel/import/, nhưng tôi tin rằng Gnumeric có một danh tiếng tốt hơn cho độ chính xác wrt để nhập khẩu Excel.

+0

lưu ý: xlsLib là thư viện để tạo các tệp excel, nhưng nếu không thì câu trả lời tuyệt vời - nhiều hơn là tôi đã tìm được chính mình –

+0

Câu trả lời hay (tôi muốn +1 nó, nhưng hôm nay tôi đã hết sạch tiền - tôi sẽ quay lại để làm điều đó sau). CodeProject một trong những đề cập ở trên có thể là con đường để đi - những gì được thực hiện là có từ các định dạng nhị phân Excel: http://www.microsoft.com/interop/docs/OfficeBinaryFormats.mspx#EXB - và bạn sẽ phải đáng kể dọn dẹp và tăng cường mã đó. Đó là nếu bạn đang làm việc với các định dạng Excel 97-2003 - với 2007/2010, nó dễ dàng hơn nhiều vì tất cả chỉ là XML. –

+0

câu trả lời không phải là những gì tôi đang tìm kiếm thậm chí bằng một cảnh quay dài, trong khi tôi không có ROI từ các ứng dụng tôi thực hiện, vì vậy chi tiêu số tiền tốt chỉ dành cho việc nhập excel không phải là cách để đi. Mặc dù tôi đang trao giải thưởng vì nó thực sự là một câu trả lời tuyệt vời, cổ vũ –

2

@David H
Tôi tìm thấy câu trả lời của anh ấy là cách tốt nhất để giải quyết vấn đề. Bạn sẽ tìm thấy DHlibxls của mình là tốt hơn để phân tích tệp xls trong chương trình ios. Đây là một trong các blog của tôi summary

1

Gần đây tôi đã tham gia vào một dự án mà khách hàng muốn nhập thông tin từ tệp Excel vào ứng dụng. Tôi biết của mọi người nói, chỉ cần chuyển đổi thành CSV và phân tích cú pháp theo cách đó, nhưng tôi thực sự không muốn khách hàng trải qua một bước khác và giới thiệu định dạng tệp khác - đơn giản như vậy .

Tôi đã thử sử dụng DHlibxls, nhưng tôi cảm thấy hơi phức tạp một chút, vì vậy tôi đã tạo QZXLSReader. Đó là giải pháp kéo và thả để dễ sử dụng hơn. Tôi không nghĩ đó là tính năng hoàn chỉnh, nhưng nó làm việc cho tôi.

Về cơ bản, đó là thư viện có thể mở tệp XLS và phân tích chúng thành các lớp Obj-C.Một khi bạn có các lớp học, nó rất dễ dàng để gửi chúng đến Core Data hoặc một từ điển hoặc những gì có bạn.

Tôi hy vọng điều đó sẽ hữu ích!

+0

@oliveresF Tôi đã thêm QZXLSReader. trong dự án của chúng tôi và NSString * xlsFileURL = [[NSBundle mainBundle] pathForResource: @ "GTM_map_list" ofType: @ "xls"]; QZWorkbook * excelReader = [[Phân bổ QZWorkbook] initWithContentsOfXLS: [URL NSURLVới: xlsFileURL]]; nhưng nhận excelReader.workSheets nil –

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