- ベストアンサー
datagridviewからエクセルへのエクスポート方法とは?
- Accessに接続して、クエリから得られる結果をdatagridviewに表示し、範囲指定してエクセルへエクスポートする方法について教えてください。
- エクスポートした際に、文字が入っているセルに罫線を引くことは可能でしょうか?データの変更に対応するためにコードの修正が必要になる理由も教えてください。
- XP(SP3)とvb.net2008ExpressEdition、Excel2007、Access2000の環境を使用しています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
no2です。 参考になるものって、ないですよ。オリジナルなので! excelの操作自体は、no3さんにもリンクしているものも参考に はなりますが、ただEXCEL2007についてはいくつか大幅に仕様 (excel2003に比べて)が変わっているようです。 今回必要かどうかはわからないですが、グラフ操作は全然駄目 でしたね。罫線の種類とか定義してある予約語なんかは、軒並み 変更されてました。 使用する命令は、特別なものを使っているわけでないです。 「vb.net」でググってみるとでてくる基本的な命令で十分です。 1から10まで聞いているようですが、基本的な命令は完ぺきと まではいかないまでもどんなものがあるかは、頭に叩き込んで ください。そうすることによって、どんな部品が必要になるかが 理解してくると思います。(クラス分割にはオブジェクト設計とい う考え方も必要ですが、まずそれは置いといて...) ご質問の内容にしてもいくつもの部品が必要と思います。 その部品レベルの中の方式で解らないことが発生した場合 別途質問してみてください。そうすることにより回答者さんも よりこたえやすくなると思います。 なお、私が回答したイメージ(「a1:a1,100」を指定して[a1:a 171]と解を得られるもの)もご質問者様が本当に必要なものに ついてのごく一部だと思います。どんなものが必要なのかもっと 詳細に検討すると、色々な部品が必要かと思います。 (実際の機能は質問内容の一部かと思います) それでは、頑張ってください。
その他の回答 (3)
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
Sub Set罫線(ByVal p_xlsRng先頭 As Excel.Range) Dim l_xlsSheet As Excel.Worksheet = p_xlsRng先頭.Worksheet Dim l_xlsRag最後 As Excel.Range = p_xlsRng先頭.SpecialCells(Excel.Constants.xlLastCell) Dim l_xlsRngエリア As Excel.Range = l_xlsSheet.Range(p_xlsRng先頭, l_xlsRag最後) Dim l_xlsBorder As Excel.Border = l_xlsRngエリア.Borders l_xlsBorder.LineStyle = Excel.XlLineStyle.xlContinuous 'おまけ '(1)オブジェクト毎にこまめに変数を利用する '(2)不要になったオブジェクトは、こまめに開放する 'という処理をしてあげないと、Excelnoプロセスが残ります。 '関数「MRComObject」は 'http://hanatyan.sakura.ne.jp/dotnet/Excel08.htm 'を参照 MRComObject(l_xlsBorder) MRComObject(l_xlsRngエリア) MRComObject(l_xlsRag最後) MRComObject(l_xlsSheet) End Sub
- ToOrisugaru
- ベストアンサー率28% (80/280)
NO1です。コードの記述は無理ですね。社外秘です。 乗せても、コードが長くてここには載せられません。
- ToOrisugaru
- ベストアンサー率28% (80/280)
はじめまして、通るすがると申します。 以下のご質問の件なのですが >範囲指定をしないで、罫線を引く事は可能でしょうか? できません。 ちなみに、DatagridViewからexcelへの出力は私も色々と試したのですが 一つ一つのセルに対して、データを設定および罫線を設定するのは非常に 処理が重くなります。プログラム側でまとまった範囲でデータを構築し excelへ出力する際、レンジ指定により一気に出力したほうが早く処理でき るようです。 >(エクスポートした際に、文字が入っているセルに対して罫線を引きたい > と思っております。) >理由:データの削除や登録が行なわれた場合、コードを変更する必要があ >る為です >xlSheet.Range("A1:F172").Borders.LineStyle = Excel.XlLine >Style.xlContinuous 上記内容について、用はAto1("A1:F172"の指定方法)形式で範囲を指定し ているが為に固定でしか指定できないと認識しているのではないでしょうか ? もしその考え方であれば、少し工夫してこの形式でも計算できるclassを構 築すればいいのではないでしょうか? たとえば、(A1:A1)の100行後のアドレスは、(A1:A100)という 具合に計算してくれるclassです。 そのようなクラスが出来れば、可変的にラインを線画することも可能になる と思います。 ただ、上記例のようにA1:F172のような2次元で一気にデータも処理を行お うとするとメモリを圧迫するため縦の列ごとに出力するように考えたほうが いいかもしれません。 2次元で設定する場合は、罫線設定のみにとどめておくおことをお勧めします。
補足
ご回答ありがとうございました。 >たとえば、(A1:A1)の100行後のアドレスは、(A1:A100)という 具合に計算してくれるclassです。 そのようなクラスが出来れば、可変的にラインを線画することも可能になる と思います。 コードの記述内容を教えて頂く事は出来ないでしょうか?
補足
分かりました。 社外秘の情報を聞こうと思っておりません。 参考になる情報等を教えて頂けませんか?