C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: datagridviewカスタム列について


(過去ログ 168 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■97234 / inTopicNo.1)  datagridviewカスタム列について
  
□投稿者/ 初♯ (1回)-(2021/04/18(Sun) 22:02:22)

分類:[C#] 

初めて質問させていただきます。
Windowsフォームで選択したexcelファイルをデータグリッドビューに表示してチェックボックスでチェックされているファイルを印刷するツールを作成しています。
これだけならなんとか出来そうなのですが、シートも選択できるようしなくてはいけなくなりました。
コンボボックスの列を追加してみたのですが複数選択ができませんでした。コンボボックス+チェックボックスリストのような
カスタム列をデータグリッドビューに追加することは現実的でしょうか?
プログラミングは初心者でc#を使っていますがコントロールのカスタムはやったことがないためご助力いただけると幸いです。
引用返信 編集キー/
■97235 / inTopicNo.2)  Re[1]: datagridviewカスタム列について
□投稿者/ 魔界の仮面弁士 (3069回)-(2021/04/19(Mon) 08:57:17)
No97234 (初♯ さん) に返信
> Windowsフォームで選択したexcelファイルをデータグリッドビューに表示してチェックボックスでチェックされているファイルを印刷するツールを作成しています。
> これだけならなんとか出来そうなのですが、シートも選択できるようしなくてはいけなくなりました。

Excel ファイルというのは .xlsx 形式でしょうか。
現状はどのようにして読み取っていますか?


ReoGrid であれば、こんな感じでワークシートを得られます。

// 現在表示中のワークシートインスタンスを取得する
var worksheet = reoGridControl.CurrentWorksheet;
// 番号または名前でワークシートインスタンスを取得する
var sheet1 = reoGridControl.Worksheets[0];
var sheet2 = reoGridControl.Worksheets["Sheet2"];


ClosedXML であれば、こう書けます。

var sheet3 = workbook.Worksheet["Sheet3"]; // Worksheets では無いので注意


EPPlus だと、こうなります。

var sheet4 = excelPackage.Workbook.Worksheets["Sheet4"];
引用返信 編集キー/
■97236 / inTopicNo.3)  Re[1]: datagridviewカスタム列について
□投稿者/ 魔界の仮面弁士 (3070回)-(2021/04/19(Mon) 09:10:07)
2021/04/19(Mon) 09:13:11 編集(投稿者)

No97234 (初♯ さん) に返信
> コンボボックス+チェックボックスリストのような
> カスタム列をデータグリッドビューに追加することは現実的でしょうか?

作るとすると、こういう形になりますね。
https://qiita.com/yaju/items/369cb5be0c0298859b3e

標準の機能では無いので、作りこみが必要です。
これを自分で作るのか、他者が作成したライブラリを使うことになるでしょう。
それをカスタム列やカスタムセルから表示させるとなると、
さらに手間はかかります。


> シートも選択できるようしなくてはいけなくなりました。
シートを選択するためにカスタムセルを使うのは、
ユーザーインターフェイス的には不自然かと思います。

ReoGrid だと、シートタブも使えますし、
印刷も一応出来ますが如何でしょうか。
https://reogrid.net/jp/document/workbook/
https://reogrid.net/jp/document/print/


ただし印刷結果の再現性となると、本家 Excel にはかなわいません。
印刷が主目的の場合には、印刷部分だけは Excel の印刷機能を
呼び出すというのも選択肢の一つです。


Excel データが単純な行・列データのみであり、見た目にはこだわらないなら、
1 列目:シート名、2列目以降:シート上のA列以降のデータ
という形で単純に並べていくという選択肢も出てきますが、
細かい点については、アプリケーションが求める要件次第ですね。
引用返信 編集キー/
■97258 / inTopicNo.4)  Re[2]: datagridviewカスタム列について
□投稿者/ 初# (1回)-(2021/04/19(Mon) 20:21:26)
No97235 (魔界の仮面弁士 さん) に返信
> ■No97234 (初♯ さん) に返信
>>Windowsフォームで選択したexcelファイルをデータグリッドビューに表示してチェックボックスでチェックされているファイルを印刷するツールを作成しています。
>>これだけならなんとか出来そうなのですが、シートも選択できるようしなくてはいけなくなりました。
>
> Excel ファイルというのは .xlsx 形式でしょうか。
> 現状はどのようにして読み取っていますか?

ご回答有難うございます。
基本的には.xlsx形式になります。古いファイルには.xls形式もありますが、、
現状まだexcelファイルを読み取る手段を迷っている段階です。
ClosedXML 、EPPlus 、NPOI などでやりたいと思っているのですが
調べたところ印刷ができないようなことが書かれておりまして
Microsoft.Office.Interop.Excelを使用しようかなと考えております。
(推奨されていないみたいですが)
ReoGridは初めて耳にしましたので一度調べてみようと思います。
取得から印刷までできるものなのでしょうか?




引用返信 編集キー/
■97260 / inTopicNo.5)  Re[2]: datagridviewカスタム列について
□投稿者/ 初# (2回)-(2021/04/19(Mon) 20:34:06)
No97236 (魔界の仮面弁士 さん) に返信
> 2021/04/19(Mon) 09:13:11 編集(投稿者)
>
> ■No97234 (初♯ さん) に返信
>>コンボボックス+チェックボックスリストのような
>>カスタム列をデータグリッドビューに追加することは現実的でしょうか?
>
> 作るとすると、こういう形になりますね。
> https://qiita.com/yaju/items/369cb5be0c0298859b3e

自分も一度そのサイトを拝見しましたが難しそうで初心者には敷居が高そうでした。

>
>
> ただし印刷結果の再現性となると、本家 Excel にはかなわいません。
> 印刷が主目的の場合には、印刷部分だけは Excel の印刷機能を
> 呼び出すというのも選択肢の一つです。

Excelで印刷を使用するとなるとMicrosoft.Office.Interop.Excelしかないのでしょうか?


> Excel データが単純な行・列データのみであり、見た目にはこだわらないなら、
> 1 列目:シート名、2列目以降:シート上のA列以降のデータ
> という形で単純に並べていくという選択肢も出てきますが、
> 細かい点については、アプリケーションが求める要件次第ですね。

正直、このアプリケーションは課題でして機能の概要だけ聞いてあとは自分で作ってみましょうというものです。
とりあえず自分が使いやすいものを作ってみようかと考え鋭意作成中ではありますが、
データグリッドビューを使用して印刷対象にチェックをいれて実行するのが
直感的に使用できるかなと考えております。
シートの数だけ列を増やすのは対象ファイルのシートの数が不明のためあまりやりたくはありません。
シート選択だけ別画面にするという方法も視野におります。


引用返信 編集キー/
■97269 / inTopicNo.6)  Re[3]: datagridviewカスタム列について
□投稿者/ 魔界の仮面弁士 (3076回)-(2021/04/20(Tue) 11:50:53)
No97260 (初# さん) に返信
>>ただし印刷結果の再現性となると、本家 Excel にはかなわいません。
> Excelで印刷を使用するとなるとMicrosoft.Office.Interop.Excelしかないのでしょうか?

どこまでの再現度が必要なのか、にもよると思いますが、
まずは ReoGrid を試してみては如何でしょう。
ダウンロードページにあるパッケージは Version 2.1 (2017/10/21)です。
https://reogrid.net/jp/download/

サンプル用の unvell.ReoGridEditor.exe を使って、
既存の .xlsx ファイルを開いて印刷できます。

再現度が低い箇所は、元ファイルを手直しする必要があるかもしれませんが、
その逆に、Excel ではできない表現が可能だったりするので、要件に合うかは自己判断で。

なお、修正された最新版が必要なら、GitHub からソースコードを入手できます。
https://github.com/unvell/ReoGrid


ReoGrid 以外で印刷機能を備えたライブラリとしては、SpreadsheetGear などがありますが、
こちらは試したことがありません。
https://www.xlsoft.com/jp/products/spreadsheetgear/index.html
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -