2013-12-13 19 views
12

Tôi có một ứng dụng web ASP.NET được lưu trữ trên Azure để sử dụng nội bộ bởi công ty chúng tôi. Trên trang web này, tôi giữ một vài bảng tính và tài liệu từ mà tôi muốn nhân viên của công ty có thể nhấp vào và mở chúng trực tiếp trong Ứng dụng web Office của Microsoft nơi họ có thể xem và chỉnh sửa chúng. Điều này rất giống với việc đăng nhập vào SkyDrive và nhấp vào tệp. Dưới đây là những gì tôi đang tìm kiếm:Mở tài liệu excel/word từ ASP.NET trong Ứng dụng Web Office để chỉnh sửa?

Yêu cầu:

  1. Người dùng sẽ có thể chỉnh sửa tài liệu trực tiếp trong trình duyệt của họ và lưu chúng.

  2. Ứng dụng web ASP.NET của tôi sẽ có thể lấy danh sách tài liệu và hiển thị chúng.

  3. ứng dụng web ASP.NET của tôi sẽ có thể cho phép người dùng tải lên các tài liệu mới

  4. Người dùng không cần phải đăng nhập nhiều hơn một lần (ví dụ, họ nên chỉ cần đăng nhập vào ASP nội bộ của chúng tôi. Ứng dụng web NET).

Những gì tôi đã cố gắng: tôi dường như không thể tìm ra cách để làm điều này, mặc dù đây là một vài điều tôi đã nghĩ đến và cố gắng.

  • Sử dụng SkyDrive + API: Giữ các tài liệu trong SkyDrive, chia sẻ chúng qua nhân viên, và sử dụng SkyDrive/Live API để đăng nhập họ và mở tài liệu. Điều này không hiệu quả với chúng tôi vì SkyDrive không cho phép bạn chia sẻ tài liệu mà không làm cho chúng hoàn toàn công khai (tức là, bất kỳ ai có liên kết đều có thể xem/chỉnh sửa chúng). Chúng phải được giữ trong nội bộ.

  • Sử dụng SkyDrive Pro: SkyDrive pro có lợi ích của thông tin xác thực chia sẻ tốt hơn. Bạn có thể chia sẻ điều gì đó với một người dùng cụ thể và chỉ người dùng đó (nghĩa là họ cần phải đăng nhập để xem/chỉnh sửa nó). Thật không may, SkyDrive Pro không được hỗ trợ trong Live API vì vậy tôi không thể truy cập các tập tin trực tiếp từ ứng dụng ASP.NET của tôi.

  • Sharepoint: Tôi nghĩ khả năng là SharePoint bằng cách giữ tài liệu trong Thư viện tài liệu và sử dụng ứng dụng khách SharePoint. Tôi nghĩ rằng tôi có thể specify user credentials to obtain a list of documents in the Document Library, nhưng tôi không chắc chắn rằng tôi có thể "mở" một trong những tài liệu đó trong Office Web trong của họ mà không làm phiền họ đăng nhập vào trang SharePoint một lần nữa, và một lần nữa. Đặc biệt nếu lần đăng nhập cá nhân của riêng họ hết thời gian? Tôi phải nhập lại mật khẩu SharePoint của mình liên tục bằng SharePoint trong trình duyệt của mình, tôi không muốn điều này khi tích hợp với ứng dụng ASP.NET của chúng tôi.

Sẽ rất tuyệt nếu Microsoft tích hợp Ứng dụng web Office vào Azure, có khả năng cho phép bạn mở tài liệu Excel và Word được lưu trữ trong Bộ nhớ Blob. Nhưng điều đó là không thể.

Có ai có ý tưởng nào khác không?

+0

Giới thiệu về biến thể thứ 4 của bạn: Hệ điều hành mà người dùng của bạn sẽ sử dụng? – Trike

Trả lời

0

tl; dr Google Apps/Drive.

Google Drive cho phép bạn chỉnh sửa và lưu tài liệu trực tiếp từ trình duyệt.

Google Apps provides an API cho Google Drive (Also for .NET), để bạn có thể có được danh sách tài liệu, hiển thị chúng và cho phép người dùng tải lên tài liệu mới.

Bạn có thể quản lý service accounts do ứng dụng của bạn sở hữu. bạn có thể sử dụng openID/SSO để người dùng không phải đăng nhập nhiều lần.

Điểm bất lợi là tài liệu trong GDrive không chính xác giống như trong văn phòng MS.

+0

Xin chào, cảm ơn câu trả lời và câu trả lời của bạn! Tôi đã nghĩ về việc đi Google Drive, và tôi chắc chắn sẽ nghĩ về nó một số chi tiết nếu không ai có thể đưa ra một giải pháp tốt cho vấn đề Office Web Apps. Như bạn đã nói, các ứng dụng/tài liệu không giống hệt nhau. Ứng dụng web Office có nhiều "phong phú hơn" của khách hàng, nhưng tôi chắc chắn sẽ sẵn sàng quay trở lại trên Google Drive nếu mọi thứ khác không thành công. – gnychis

1

Đây là một công nghệ cũ và nó chỉ hoạt động trong trình khám phá Internet, nhưng tôi nghĩ nó rất thanh lịch theo cách nó hoạt động. Lưu ý rằng nó không được chấp nhận.

Bạn bắt đầu bằng cách cài đặt Office Web Components OWC, tìm kiếm trên google sẽ cung cấp cho bạn điều đó. Sau đó cho các bảng tính bạn thêm một đối tượng như thế này

<object classid="clsid:0002E551-0000-0000-C000-000000000046" id="Spreadsheet1" width="1100" height="900"> 
       <param name="DataType" value="XMLURL" /> 
       <param name="AllowPropertyToolbox" value="1" /> 
       <param name="AutoFit" value="1" /> 
       <param name="CalculationPoco" value="-4105" /> 
       <param name="Caption" value="" /> 
       <param name="DisplayColumnHeadings" value="0" /> 
       <param name="DisplayGridlines" value="-1" /> 
       <param name="DisplayHorizontalScrollBar" value="1" /> 
       <param name="DisplayOfficeLogo" value="0" /> 
       <param name="DisplayPropertyToolbox" value="0" /> 
       <param name="DisplayRowHeadings" value="0" /> 
       <param name="DisplayTitleBar" value="1" /> 
       <param name="DisplayToolbar" value="0" /> 
       <param name="DisplayVerticalScrollBar" value="-1" /> 
       <param name="DisplayWorkbookTabs" value="1" /> 
       <param name="EnableEvents" value="-1" /> 
       <param name="MaxHeight" value="90%" /> 
       <param name="MaxWidth" value="90%" /> 
       <param name="MoveAfterReturn" value="-1" /> 
       <param name="MoveAfterReturnDirection" value="-4121" /> 
       <param name="RightToLeft" value="0" /> 
       <param name="ScreenUpdating" value="1" /> 
       <param name="EnableUndo" value="1" /> 

       <p>OWC required.</p> 
      </object> 

Và sau đó bạn có thể nhận được các đối tượng thông qua javascript và thao tác các giá trị đến và đi từ một cơ sở dữ liệu, hoặc bất cứ điều gì bạn muốn.

exlObj = document.all.Spreadsheet1; 
    exlObj.XMLURL ="/Excel/Whatever.xml"; 
    exlObj.ActiveSheet.Unprotect(); 
    exlObj.Range('Sheet1!$A1').Value = 5; 

Lưu ý rằng khi bạn đặt xml-url thì bạn phải lưu excel vào định dạng xml 2003. Tôi tự hỏi nếu nó thoát ra như một công nghệ mới.

Nhưng nó không được dùng nữa.Vì vậy, tôi đoán một giải pháp tinh khiết hơn cũng phải tồn tại.

1

Hãy xem Office Web Apps và đặc biệt là phần triển khai Office Web Apps Server.

Ở dưới cùng của trang overview nó khẳng định:

Office Web Apps Server cung cấp một trang tại địa chỉ http://OfficeWebAppsServername/op/generate.aspx mà bạn có thể sử dụng để tạo ra các liên kết đến các tài liệu công khai có sẵn mà có địa chỉ UNC hoặc URL. Khi người dùng chọn một URL được tạo, Người xem trực tuyến sẽ bật Máy chủ ứng dụng web dành cho máy chủ để lấy tệp từ vị trí của nó và sau đó hiển thị nó bằng cách sử dụng Ứng dụng web Office.

0

Nếu không thể sử dụng SkyDrive/Office365 API đã đề cập, tôi tin rằng có thể thực hiện chức năng như vậy với việc sử dụng thư viện của bên thứ 3 (Aspose, DevExpress, v.v.) xử lý + visualizers (tương tự miễn phí hoặc thương mại).

Kiểm tra:

  • Các bản demo sau:

Excel Editing

Word Editing

  • this StackOverflow sợi, mà có thể hữu ích trong trường hợp của bạn.
0

Bạn chắc chắn có thể sử dụng Office Web Apps cho việc này. Trước tiên, bạn phải có một trang trại Office Web Apps. Thứ hai, bạn cần triển khai giao diện WOPI. Có các mẫu mã và tham chiếu github trên blog msdn này.

https://blogs.msdn.microsoft.com/apulliam/2016/06/19/wopi-framework/

WOPI Khung chỉ hỗ trợ ASP.NET WOPI Servers. Khung WOPI chủ yếu chỉ là một tập các lớp C# để đơn giản hóa lập trình WOPI Server và gói gọn các giao thức phức tạp. Cách tiếp cận tương tự có thể được sử dụng để cung cấp một khung công tác WOPI cho các nền tảng phát triển khác, chẳng hạn như Node.js.

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