- NotFound
- 会議室デビュー日: 2005/07/13
- 投稿数: 18
|
投稿日時: 2007-04-12 14:46
VS2005、言語はC#でASP.NET 2.0で開発しております。
GridViewのデータをエクスポートする際、そのデータに関する
補足情報を別シートに書き込みたいと考えております。
(Sheet1にデータ、Sheet2に補足データというような)
そこで質問させていただきたいのですが、上記のような処理は
可能でしょうか。
Excelへのエクスポートのスレッドにおいてシートに関する
記述が見つからず困っております。
どなたかご教授よろしくお願いいたします。
|
- まさる
- ベテラン
- 会議室デビュー日: 2006/12/21
- 投稿数: 59
- お住まい・勤務地: 越後の中ほど
|
投稿日時: 2007-04-12 15:30
Google先生に聞いたところ、いくらでも参考になりそうなサイトがヒットしましたよ。
「Excel シート C#」の検索結果
|
- NotFound
- 会議室デビュー日: 2005/07/13
- 投稿数: 18
|
投稿日時: 2007-04-13 09:28
まさる様
ご指摘ありがとうございます。
StringWriter sw = new StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);
HtmlForm hf = new HtmlForm();
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("content-disposition", "attachment;filename=Data.xls");
Response.Charset = "";
Page.EnableViewState = false;
Controls.Add(hf);
hf.Controls.Add(dataGrid);
hf.RenderControl(hw);
Response.Write(sw.ToString());
Response.End();
現状では上記のようになっているのですが、
この処理の段階でシート指定での書き込みや
複数のシートを作成といったシートに対する処理
は可能なのでしょうか。
ご教授よろしくお願いいたします。
|
- まさる
- ベテラン
- 会議室デビュー日: 2006/12/21
- 投稿数: 59
- お住まい・勤務地: 越後の中ほど
|
投稿日時: 2007-04-13 13:18
引用: |
|
NotFoundさんの書き込み (2007-04-13 09:28) より:
まさる様
ご指摘ありがとうございます。
StringWriter sw = new StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);
HtmlForm hf = new HtmlForm();
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("content-disposition", "attachment;filename=Data.xls");
Response.Charset = "";
Page.EnableViewState = false;
Controls.Add(hf);
hf.Controls.Add(dataGrid);
hf.RenderControl(hw);
Response.Write(sw.ToString());
Response.End();
現状では上記のようになっているのですが、
この処理の段階でシート指定での書き込みや
複数のシートを作成といったシートに対する処理
は可能なのでしょうか。
ご教授よろしくお願いいたします。
|
できません。
なぜなら、上記のやり方では、htmlを無理やりExcelで開いているに過ぎないからです。
(作成されるファイルを保存してテキストエディタで開けば、中身がhtmlであることが確認できます。)
お望みのことをやりたいならば、別の手段が必要ではないかと思います。
#サーバー側でExcelファイルを作って、それをダウンロードさせるのかな?
|
- todo
- ぬし
- 会議室デビュー日: 2003/07/23
- 投稿数: 682
|
投稿日時: 2007-04-13 19:42
HTMLではなく、XMLを出力するのであれば可能かと。
Export a DataSet to Microsoft Excel without the use of COM objects
http://www.codeproject.com/dotnet/ExportToExcel.asp
複数のシートの例
コード: |
|
<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<Worksheet ss:Name="シート1">
<Table>
<Row>
<Cell><Data ss:Type="String">a</Data></Cell>
<Cell><Data ss:Type="String">b</Data></Cell>
</Row>
<Row>
<Cell><Data ss:Type="Number">1</Data></Cell>
<Cell><Data ss:Type="Number">2</Data></Cell>
</Row>
</Table>
</Worksheet>
<Worksheet ss:Name="シート2">
<Table>
<Row>
<Cell><Data ss:Type="String">c</Data></Cell>
<Cell><Data ss:Type="String">d</Data></Cell>
</Row>
<Row>
<Cell><Data ss:Type="Number">3</Data></Cell>
<Cell><Data ss:Type="Number">4</Data></Cell>
</Row>
</Table>
</Worksheet>
</Workbook>
|
|
- まさる
- ベテラン
- 会議室デビュー日: 2006/12/21
- 投稿数: 59
- お住まい・勤務地: 越後の中ほど
|
投稿日時: 2007-04-14 09:47
引用: |
|
todoさんの書き込み (2007-04-13 19:42) より:
HTMLではなく、XMLを出力するのであれば可能かと。
|
ただ、Excel 2000 以前だとXML形式は読めないんですよね。
NotFoundさんがExcelのバージョンを指定していないので、
もしかしたら無用な心配なのかもしれませんが。
|
- NotFound
- 会議室デビュー日: 2005/07/13
- 投稿数: 18
|
投稿日時: 2007-04-16 10:47
todo様、まさる様
ご返答ありがとうございます。
私の現在利用しているExcelは2003ですので
ご指導いただいた手法で処理できるように
考えてみます。
ありがとうございました。
|