@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

Live Demo:DataGridをExcelにエクスポートしてグラフを作成するには

投稿者投稿内容
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2002-09-06 12:28
View a live demo をクリックするとDataGridをExcelにエクスポートしてグラフを作成することができます。

このサンプルは、DataGridに表示するカラムを一覧から選択してExcelにエクスポートすることができます。

Excelにエクスポートしたデータは、編集して印刷したりグラフを作成して
分析することができます。

また、CSV形式に保存して別のアプリケーションにインポートすることもできます。

DataGridに選択されたカラムのみ表示するには、ランタイム時に
BoundColumnを生成します。
コード:
With dgrdProducts				
  bc = New BoundColumn()		
  With bc									
    .DataField = strDataField
    .HeaderText = strHeaderText	
    .DataFormatString = strDataFormatString
    .ItemStyle.HorizontalAlign = HorizontalAlign.Left ' or .Center or .Right		
  End With	
  .Columns.Add(bc)
End With


DataGridをExcelにエクスポートするには、DataGridのRenderControl()メソッドを使用します。

Happy Programming!
Akio Kasai

まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2002-09-09 18:52
今、こちらのサンプルとほぼ似たような処理を行いたいのですが
DataGridの情報を丸ごとエクスポートしたい場合、
RenderControl()の引数には何を入れてあげればよいのでしょうか?
申し訳ございませんが、ご教授願います。
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2002-09-10 11:32
追記です。
■OS:Win2K
■DB:Oracle8i
■VB.NET使用

テーブル情報をDataGridにバインドして表示させているのですが、
それを印刷用としてExcelにエクスポートして新しいウインドウで表示させたいのです。
Dr ADO.NET様のおかげでRenderControlメソッドを使用することろまでは
分かったのですが、そのメソッドをどう使ってエクスポートさせればよいのか
色々調べてみたのですが分かりませんでした。

DataGridの情報を全てExcelにエクスポートし、かつそれを別ウィンドウで表示させる
方法を教えて頂きたく、宜しくお願い致します。
未記入
ベテラン
会議室デビュー日: 2002/09/10
投稿数: 68
投稿日時: 2002-09-10 22:05
私も似たようなことがやりたくて調べています。
下記サイトのコードを参考にして、
Excelファイルをダウンロードさせるまではできました。

http://www.dotnet247.com/247reference/msgs/14/72757.aspx

以下、引用:(文章によると、どこかにVBのコードもあるようですが・・・)
----------------
Thanks, your example was perfect.
Many Kudos to you.

And if anybody needs it, here is the VB Code Converted into C# that I am using.
________________________________________________________________________________
<SCRIPT language="C#" runat="server">

protected void Page_Load(Object Src, EventArgs E) {
if (!IsPostBack) {
//Bind the Datagrid
Database myData = new Database("SELECT * FROM myTable"); //my own class
DG.DataSource = myData.GetDataTable();
DG.DataKeyField="ID";
DG.HeaderStyle.ForeColor = System.Drawing.Color.White;
DG.HeaderStyle.BackColor = System.Drawing.Color.Black;
DG.DataBind();

Response.ContentType = "application/vnd.ms-excel";
Response.Charset = ""; //Remove the charset from the Content-Type header.
Page.EnableViewState = false; //Turn off the view state.

System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);

DG.RenderControl(hw); //Get the HTML for the control.
Response.Write(tw.ToString()); //Write the HTML back to the browser.
Response.End(); //End the response.
}
}

</SCRIPT>

未記入
ベテラン
会議室デビュー日: 2002/09/10
投稿数: 68
投稿日時: 2002-09-10 22:06
で、
便乗質問なのですが、このように直にExcelファイルをダウンロード
させるような方法だと、「0001」のようなデータが「1」になってしまう
というった風に初めの「0」が落とされてしまいます。
これをなんとか回避する方法はないでしょうか。


Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2002-09-11 03:07
引用:

させるような方法だと、「0001」のようなデータが「1」になってしまう
というった風に初めの「0」が落とされてしまいます。
これをなんとか回避する方法はないでしょうか。



Automation機能を使用してセルの書式を文字型に設定すれば可能では・・・

VBScriptでExcelを起動する例です。
(JavaScriptでは正常に動作しないようです)

Dim sHTML
sHTML = window.parent.frames("bottom").document.forms(0).children("DataGrid1").outerhtml
Dim oXL, oBook
Set oXL = CreateObject("Excel.Application")
Set oBook = oXL.Workbooks.Add
oBook.HTMLProject.HTMLProjectItems("Sheet1").Text = sHTML
oBook.HTMLProject.RefreshDocument
oXL.Visible = true
oXL.UserControl = true
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2002-09-12 13:43
通常の名無しさんの3倍さん、
Dr ADO.NETさん、
有難うございました!

しかし、昨日「納期まで時間ないから後回しにして」と急に言われ、
現在は別の作業をやらされております・・・。
折角教えて頂いたのに申し訳ありません。
また作業が再開した時に参考させて頂きます!
本当に有難うございました。
よしのり
会議室デビュー日: 2002/09/17
投稿数: 1
投稿日時: 2002-09-17 16:54
こちらのサンプルを使用し、DataGridをExcelにエクスポートする
処理を作成したのですが、DataGridに表示されているレコードが
1レコードのとき、文字化けが起こります。
2レコード以上のときは、問題ありません。

皆様はこのような現象は起こっていないのでしょうか?
回避する方法があれば教えて頂きたく。
宜しくお願い致します。


_________________

スキルアップ/キャリアアップ(JOB@IT)