Web開発時のReoGridの使い方について 

タグの編集
投稿者 たくみ  (学生) 投稿日時 2020/4/15 12:09:32
お世話になっております。

初歩的な質問で申し訳ありません。

先日、こちらの掲示板に
「WebアプリケーションからのExcel操作について」質問させていただいた者ですが、
その際、魔界の仮面弁士様から

>クライアント側での印刷処理なら、 無料の ReoGrid を用いる選択肢もあります。
>https://reogrid.net/jp/document/print/
>https://reogrid.net/jp/document/
>
>しかし ReoGrid だと、サーバー側での印刷はできません。
>ファイルの読み書きはサーバー側でもできるので、Excel ファイルを HTML に変換して
>ブラウザー側の機能で印刷してもらうということはできますが…本筋からは外れてしまいますね。 

と、貴重なアドバイスをいただきましたので、
WebアプリケーションでReoGridを使いExcelファイルの読み書きを行いたいと思い、
NuGetからunvell.ReoGrid.dllをダウンロードしたのですが、コントロールがツールボックスに
表示されません。

ご教示いただけると助かります。
宜しくお願い致します。


※ 開発環境 
 Microsoft Visual Studio Community 2019 VisualBasic
 OSは、Windows10 です
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2020/4/15 12:28:09
デスクトップ アプリケーションで使うときのような、
Web アプリケーション用のコントロールが存在しているわけではありません。

Web サーバー側で印刷するために使う事はできるかもしれませんし、
あるいはメモリワークシートで情報を読み取り、それを自前で HTML に変換するといった
手間をかければ、Web ページにデータを表示させられると、という程度の話です。

https://reogrid.net/jp/faq/
>
> Webで利用できますか
>
> 一部利用できます。ReoGridはWebで動作するコンポーネントではありませんので、
> 直接Webでのご利用はできません。ただし、編集機能以外、Excelの帳票をHTMLに
> コンバートしたり、Excelの帳票を加工して計算結果を取り出してWebに出力したり、
> Webからアップロードした帳票のデータを分析したり、データベースのデータを
> ExcelやCSVに生成してダウンロードしたりといった使い方は可能です。
>


ASP.NET から連携したいとかではなく、単に Web ページ上に表示したい
(あるいは Web 上で編集したい)という話であれば、その Excel ファイルを
OneDrive や SharePoint 上にアップロードして、Web ブラウザー版の Excel で
表示させることもできます。
https://support.office.com/ja-jp/article/onedrive-%E3%81%A7%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B7%E3%83%BC%E3%83%88-%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B-c051a205-1c06-4feb-94d8-793b0126b53a
投稿者 たくみ  (学生) 投稿日時 2020/4/18 10:47:54
魔界の仮面弁士様

ご返答ありがとうございます。

大変勉強になります。

ReoGridについて、もうひとつだけ確認があるのですが・・・


① VisualBasic WindowsフォームアプリケーションでForm1に ReoGridコントロール を配置し、あらかじめ用意した開発PC内のExcelブック(C:\jdata\prt.xlsx)を表示させるプログラムを作成しました。

② ①で作成したプログラムのbinフォルダ内のDebugフォルダーをフォルダーごとC:\jdataフォルダー内にコピーしました。

③ 開発中のWebアプリケーションから ②Debugフォルダー内のexeを開くよう組みました。


VisualBasicのデバッグでは、②Debugフォルダー内のexeファイルが開くのですが、テスト用に(localhost)に公開し開こうとしますと、 WebForm1 はブラウザに表示されるのですが、①で作成したexeが表示されません。


本筋から外れてしまうかもしれませんが、よろしくお願いします。



※Windowsフォームアプリケーション側のコードです

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        ReoGridControl1.Load("C:\jdata\prt.xlsx")

    End Sub
End Class


※Webアプリケーション exeファイルを開くpageのコードです

Public Class WebForm1
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Shell("C:/jdata/Debug/GjAppHp.exe")

    End Sub
End Class


※ 開発環境 
 Microsoft Visual Studio Community 2019 VisualBasic
 OSは、Windows10 です 
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2020/4/18 19:30:42
う~ん……Web アプリケーションの設計が根本から間違っていますよ。


まず、Page_Load に書いた処理というのは、サーバー側で実行される部分です。
なので現状のコードだと、exe はブラウザーを開いているパソコン側ではなく、
インターネット上のサーバー上に配置しておかなければならないわけです。

今は一つの端末上で実行しているのでしょうから、サーバー側とクライアント側の違いを
体感しにくいかも知れませんが、この違いは重要です。

Web サーバー側の画面に ReoGrid なアプリが表示されたところで、
ブラウザーを開いている利用者それぞれのパソコン画面に ReoGrid が
表示されるわけではないのです。


では、利用者側の画面に、exe の画面を開くにはどうすればよいのか…というと、
これもまた、基本的には不可能です。

Web アプリケーションの場合、基本的には外部 exe の呼び出しはできないように設計されています。

もしもサーバー側が、勝手に PC 上の任意のファイルを無許可で呼び出せたとしたら、
重大なセキュリティホールになってしまいますので。(ユーザー側で許可すれば別ですが)

制限付きで良いなら一応の回避策として、レジストリに登録された URI スキームから、
クライアント上のアプリケーションを呼び出すことは可能です。思っている物とは違うかもしれませんけど。

<a href="microsoft-edge:http://www.google.com/">Edge で Google を開く</a>
<a href="ms-excel:https://file-examples.com/wp-content/uploads/2017/02/file_example_XLSX_10.xlsx">サーバー上のファイルをクライアントの Excel で開く</a>


https://docs.microsoft.com/ja-jp/windows/uwp/launch-resume/reserved-uri-scheme-names
https://qiita.com/mkawa/items/86ee7af358abde49d22d
https://ja.stackoverflow.com/questions/27343/


あるいは、作成したデスクトップ アプリケーションを ClickOnce として「発行」し、
Web サイト上にそれらを置いておけば、Web ページ上に *.application へのリンクを
用意しておくことでそれをユーザーがクリックしたときにアプリケーションを起動させることができます。

どちらにしても、ユーザー側の操作を起点として実行されるものであり、
サーバー側(VB 側のコード) によって呼び出せるものではありません。