Web開発時のReoGridの使い方について
投稿者 魔界の仮面弁士  (社会人)
投稿日時
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
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 です
ご返答ありがとうございます。
大変勉強になります。
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 スキームから、
クライアント上のアプリケーションを呼び出すことは可能です。思っている物とは違うかもしれませんけど。
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 側のコード) によって呼び出せるものではありません。
まず、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>
<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 側のコード) によって呼び出せるものではありません。
初歩的な質問で申し訳ありません。
先日、こちらの掲示板に
「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 です