電子書籍の厳選無料作品が豊富!

GridviewをExcel形式で書き出すコードを作成してみました。

Protected Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click

'書き込むファイルが既に存在している場合は、上書きする
Dim sw As New System.IO.StreamWriter("C:\××\××.xls", _
False, _
System.Text.Encoding.GetEncoding("shift_jis"))
Dim HW = New HtmlTextWriter(sw)

'TemplateFieldを非表示(Excel書出しエラーを回避)
Me.GridView2.Columns(0).Visible = False
Me.GridView2.Visible = True
Me.GridView2.RenderControl(HW)

'閉じる
sw.Close()

End Sub

この方法で書き出されたExcelファイルを開いてみると
「開こうとしているファイル××の形式は、ファイル拡張子が示す形式と異なります云々・・・。」
と出て、「はい」で無理矢理開くとExcel形式で表示されますが
このファイルはどうやらWebページ形式のようです。

ネットで調べたところ以下のような記載を見つけました。

>なぜなら、上記のやり方では、htmlを無理やりExcelで開いているに過ぎないからです。
>(作成されるファイルを保存してテキストエディタで開けば、中身がhtmlであることが確認できます。)

たしかに上記のとおりになってしまっているのですが
このファイルを、Excel97-2002形式で保存することは出来ないのでしょうか?

A 回答 (2件)

HtmlTextWriter使ってる時点でhtml書き出しですね。


Excel利用という観点では、他にxml書き出しなどもありますが、やはりxlsではありません。

純粋なXLS書き出しを行うには、サードパーティー製の書出しモジュール(有償製品)を使うか、Webアプリならファイル書出しではなくResponseを使い、Content-typeにExcelを指定してヘルパアプリケーションとしてExcelを開かせてしまう、という方法になると思います。

コンポーネントで実績があるのはここいら
Excel Creator
http://www.adv.co.jp/product/product_excelcreato …
    • good
    • 1
この回答へのお礼

ご回答いただきありがとうございます!
私が考えるように単純なものではなかったですね。。。
いただいたご回答を参考に別の方法を探ってみます。
(できれば無料でできる方法を見つけたいです!)
社内で採用してもえるようにがんばります!!
ありがとうございました!

お礼日時:2012/04/20 09:44

できません。


一般的には、3rd パーティ製のファイル変換ツールや Excel を作成するツールをサーバにインストールして Excel で出力するか、CSVを出力することで代用します。

サーバに Excel をインストールして、Excel をオートメーション操作することはライセンス的に NG です。
    • good
    • 0
この回答へのお礼

ご回答いただきありがとうございます!
出来ないんですね・・・。
諦めて別の方法を考えます。
ありがとうございました!

お礼日時:2012/04/20 09:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!