2009-08-05 24 views
6

Cách tốt nhất để thực hiện các phép tính giống bảng tính bằng ngôn ngữ lập trình là gì? Ví dụ: Một ứng dụng nhiều người dùng cần phải có sẵn trên web mà crunches cột và các tế bào của các con số như một bảng tính dựa trên trình người dùng. Cấu trúc dữ liệu/mô hình/mô hình cơ sở dữ liệu tốt nhất để xử lý loại công việc này để xử lý các cột khác nhau được thực hiện hiệu quả và dễ dàng trong php, java, hoặc thậm chí là .Net. Sử dụng cơ sở dữ liệu có tốt hơn không khi sử dụng cấu trúc dữ liệu? Nếu sử dụng một cơ sở dữ liệu là cách, làm thế nào để đi về việc này?Phương pháp tốt để thực hiện các phép tính giống bảng tính bằng ngôn ngữ lập trình là gì?

+2

Dù bạn làm gì, bắt đầu suy nghĩ về vấn đề tham chiếu vòng tròn * đầu * ... – dmckee

+0

Và khi/nếu ai đó đề cập viết một trình biên dịch/phiên dịch cho ngôn ngữ bạn đang xây dựng, tìm kiếm đầu tiên: câu hỏi về trình biên dịch/phiên dịch của bạn đã được trả lời trên SO. – dmckee

+2

Tôi không chắc tôi thậm chí hiểu những gì bạn đang yêu cầu ở đây. Bạn cần cột và ô số, và bạn cần cho phép người dùng tính toán chúng? Điều đó có thể được thực hiện trong, tốt, khá nhiều bất cứ điều gì. Có bao nhiêu người dùng? Nếu một người dùng nhập số, người dùng khác có cần xem ngay lập tức không? Có vẻ như những gì bạn đang tìm kiếm có thể được thực hiện tốt bằng cách sử dụng J2EE hoặc .NET, nhưng điều đó dựa trên sự hiểu biết rất không đầy đủ về các yêu cầu của bạn. Nếu bạn tập trung câu hỏi của mình chặt chẽ hơn một chút, tôi nghĩ bạn sẽ nhận được câu trả lời tốt hơn. – rtperson

Trả lời

1

Aspose.Cells (trước đây là Aspose.Excel.Web) là một cách hay để có được chức năng bạn đang tìm kiếm.

Trừ khi bạn hỏi thêm về "Làm thế nào là xong?" "Tôi cần phải làm điều đó." Sau đó, tôi sẽ xem xét các câu trả lời khác được đưa ra.

+0

Tại thời điểm này, nó là nhiều hơn "Tôi cần phải làm điều đó". Mặc dù học "làm thế nào là nó được thực hiện" luôn luôn là tốt. – Kunle

+0

Điều này rất thú vị vì nó cho phép bảng tính là công cụ tính toán của ứng dụng của bạn – Kunle

1

Dọc theo dòng "Tôi cần làm điều đó"
Microsoft có Excel Services chỉ làm những gì bạn muốn. Hoạt động bảng tính trên máy chủ. Nó có sẵn thông qua một giao diện dịch vụ web, vì vậy bạn có thể kết nối và điều khiển các phép tính từ Java, PHP, .NET, bất cứ điều gì.

Dịch vụ Excel là một phần của Sharepoint 2007.

+1

Điều này là tốt, nhưng tôi không muốn kết hôn với Microsoft. – Kunle

+0

Thật không may, trừ khi bạn xây dựng tất cả từ đầu, bạn sẽ được "kết hôn" với một nhà cung cấp. Bạn muốn cân nhắc loại nhà cung cấp nào? Còn các dự án nguồn mở thì sao? –

1

Resolver One là một ứng dụng bảng tính thực hiện trong IronPython.

an explanation of the overall mechanic for the calculation [pythonology.org] nó sử dụng cho các ecuations do người dùng tạo.

Overview of Resolver One's overall algorithm to deal with user generated ecuations http://pythonology.org/images/final/resolver/images/basic-spreadsheet-eval-web.png

Những hình ảnh có liên quan cho thấy thuật toán tổng thể Resolver One.

Cần lưu ý rằng người dùng có thể viết mã python để giải thích cả trên các ô và vị trí đặc biệt 'bên ngoài trang tính'.

Nhìn vào another question here in SO, từ đó tôi sử dụng lại câu trả lời của mình.

0

Tôi không thể cho bạn biết cách thực hiện. Nhưng tôi khuyên bạn nên xem mã số PHPExcel. PHPExcel là một thư viện cho phép bạn tạo các tệp Excel trong PHP.

Các quy trình làm việc của PHPExcel được đơn giản hóa như thế này:

  1. Tạo một đối tượng tập tin Excel trống
  2. Thêm tế bào (với một trong hai dữ liệu hoặc công thức) cho "tập tin Excel"
  3. Gọi chức năng tạo tạo chính tệp đó

Trong trường hợp của bạn, bạn sẽ phải thay thế 3. bằng thứ gì đó như "Tạo giao diện web".

Vì vậy, tôi khuyên bạn nên xem mã của dự án mã nguồn mở này và xem cấu trúc chung như thế nào. Điều này sẽ giúp bạn giải quyết vấn đề của mình.

2

Để thực hiện phép tính thực tế, hãy xem lý thuyết đồ thị. Về cơ bản, bạn muốn đại diện cho mỗi ô dưới dạng một nút trong biểu đồ và mỗi phụ thuộc như là một cạnh đạo diễn. Tiếp theo, hãy thực hiện topological sort để tính giá trị của từng ô theo đúng thứ tự.

-1

Tôi phải chỉ ra rằng các bảng tính google đã thực hiện loại nội dung này.

0

Tôi đã từng sử dụng cây nhị phân để lưu trữ kết quả phân tích chuỗi bằng cách sử dụng BODMAS. Mỗi nút là một hoạt động giữa hai nút khác, có thể là một số, một biến hoặc một hoạt động khác.

Vì vậy, y = x * x + 2

trở thành:

  + 
     *  2 
    x  x 

Thật đáng buồn này còn đi học trong Pascal và được lưu trữ trên một đĩa 5 1/4" , do đó bạn không muốn nó :)

0

sẽ cho phép bạn tải bảng tính Excel, cắm vào giá trị, tính toán và sau đó nhận được kết quả.

bạn có thể thấy một vài mẫu tính ASP.NET đơn giản here, các mẫu ASP.NET khác here và tải xuống bản dùng thử miễn phí here.

Disclaimer: Tôi sở hữu SpreadsheetGear LLC

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