2

VBScript を使用して Excel スプレッドシートを作成する方法はありますか? FileSystemObject を使用してテキスト ファイルを作成し、必要な拡張子を使用できますが、これをダウンロードしようとすると、Excel で開くオプションが表示され、別の形式であるというメッセージが表示されます。避けたい:

set fs=Server.CreateObject("Scripting.FileSystemObject")
set tfile=fs.CreateTextFile(Server.MapPath("xls/streamtest.xls"),true,false)

これはテキストをASCII形式でファイルにプッシュしていることを知っています。

このすべてを回避するために使用できる「何か」の文字シーケンス、特定のフォーマットはありますか?

ありがとう

4

5 に答える 5

0

別の質問でこれに答えました。 Excel スプレッドシートの正しい書式設定 Office (少なくとも Excel) がインストールされている場合、サーバーで CreateObject("Excel.Application") を使用できるはずです。

Xls (および他の種類の Excel 2007/2010 はバイナリ ファイルであり、そのように簡単に作成することはできません。それらを作成および操作するには、Com オブジェクトを使用する必要があります。スクリプト担当者の例http://blogs.technet. com/b/heyscriptingguy/archive/2005/01/31/how-can-i-make-changes-to-and-then-re-save-an-existing-excel-spreadsheet.aspx

Set objExcel = CreateObject("Excel.Application") 
objExcel.Visible = True 
objExcel.DisplayAlerts = FALSE 

Set objWorkbook = objExcel.Workbooks.Add 
Set objWorksheet = objWorkbook.Worksheets(1) 

objWorksheet.Cells(1, 1).Value = Now 
objWorkbook.SaveAs("C:\Scripts\Test.xls") 
objExcel.Quit 

使用できる vba 関数のリストについては、http://msdn.microsoft.com/en-us/library/aa223697(v=office.11​​).aspx を参照してください。

于 2012-06-21T07:39:13.500 に答える
0

上記のコメントに同意します。私は常に Response.ContentType と Response.AppendHeader を使用してこれを行ってきました

Response.ContentType = "application/vnd.ms-excel"
Response.AppendHeader "content-disposition", "filename=MySpreadsheet.xls"
于 2012-06-07T12:17:23.790 に答える
0

Excel がサーバーにインストールされ、アクセス可能であり、sFSpec が作成する (空の) .xls の完全な (サーバーにマップされ、アクセス可能な) ファイル仕様である場合、

 Dim oExcel : Set oExcel = [Server.]CreateObject( "Excel.Application" )
 oExcel.Workbooks.Add.SaveAs sFSpec
 oExcel.Quit

動作するはずです。「Excel.Application」を使用できない場合は、Excel 接続を開いて適切な CREATE TABLE ステートメントを実行することにより、ADO を使用できます。

追加した

ローテクなアプローチは、ワークステーションから盗んだ空の .xls をテンプレートとして使用することです。ただし、オンザフライで .xls を作成できます。

  Dim sFSpec : sFSpec = resolvePath("..\data\byado.xls")
  If goFS.FileExists(sFSpec) Then goFS.DeleteFile sFSpec
  Dim oXDb : Set oXDb = CreateObject("ADODB.Connection")
  Dim sCS  : sCS      = Join(Array(_
        "Provider=Microsoft.Jet.OLEDB.4.0" _
      , "Data Source=" & sFSpec            _
      , "Extended Properties="""           _
          & Join(Array(     _
                "Excel 8.0" _
              , "HDR=Yes"   _
              , "IMEX=0"    _
            ), ";" )        _
          & """"            _
  ), ";")
  oXDb.Open sCS
  oXDb.Execute "CREATE TABLE [WhatEver] (DontCare INTEGER)"
  oXDb.Close
  If goFS.FileExists(sFSpec) Then WScript.Echo "qed"

(「Excel !Version!」をいじる必要があるかもしれません。「IMEX=0」が重要です)

于 2012-06-06T20:15:24.797 に答える