[ASP.Net]在ASP.Net中,用C#動態產生Excel檔-上

  • 14111
  • 0

[ASP.Net]在ASP.Net中,用C#動態產生Excel檔-上

(1)使用Microsoft.Office.Interop.Excel的權限設置

加入COM+物件,Microsoft Excel 11.0 Object Library
clip_image002

這時你可以 using Microsoft.Office.Interop.Excel;
但是當你實際呼叫去new一個Application物件時,
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
會發生權限不足的問題。所以我們要先替ASP.Net設定使用COM物件的權限


開始->執行->輸入dcomcnfg 會出現元件服務的視窗。
clip_image004


展開樹狀列表中的DCOM設定,可以看到Microsoft Excel 應用程式(Application)的東西。點選滑鼠右鍵可以看到,如下畫面:
clip_image005
遇到權限問題,當然要做安全設定啦。在安全設定裏面依照需求開放權限,啟動和啟用權限設定啟動COM物件的權限存取權限設定存取COM物件建立的東西的權限


在這裡我將每個權限都設成自訂,然後點選編輯,接著就會出現常見的安全性設定畫面。在群組或使用者名稱裡面新增ASP.Net、IUSER_電腦名、IWAN_電腦名稱,如果你是使用Windows 2003 server那麼就要新增IIS_WPG、Network Service
clip_image006 



(2)動態建立Excel檔案

需要Using的命名


using Microsoft.Office.Interop.Excel;
using System.Reflection;
需要使用的變數。Workbook表示Excel檔,Worksheet表示一個Excel檔裡面的sheet(一個Excel檔可以有很多sheet),Range表示Excel裡面單元格的範圍。

Workbook wb = null;
Worksheet ws = null;
Range aRange = null;
Range aRange2 = null;

object mObj_opt = System.Reflection.Missing.Value;
啟動Excel應用程式


if (xlApp == null)
{
    Response.Write("Error!");
    return;
}
Excel應用程式建立一個Excel物件,也就是Workbook。並取得Workbook中的第一個sheet。這就是我們要操作資料的地方。

ws = (Worksheet)wb.Worksheets[1];

if (ws == null)
{
    Response.Write("Error!");
}
要在Excel儲存資料,有三種方式,以下分別介紹。利用Range物件,設定要儲存資料的儲存格範圍


if (aRange == null)
{
    Response.Write("Error!");
}

// Fill the cells in the C1 to C7 range of the worksheet with the number 6.
Object[] args = new Object[1];
args[0] = 6;
aRange.Value2 = args;
衍生自上面方法,但是在儲存資料的時候,可以用InvokeMember呼叫aRange的資料成員(成員函式?)。

利用Cells屬性,取得單一儲存格,並進行操作。 



Object[] args2 = new Object[1];
args2[0] = "This is example for create excel!!";
aRange2.Value2 = args2;
最後,呼叫SaveAs function儲存這個Excel物件到硬碟。

    , mObj_opt, mObj_opt, mObj_opt
    , Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange
    , mObj_opt, mObj_opt, mObj_opt
    , mObj_opt, mObj_opt);
[第12頁]
 

HI!我是finalevil,這是我的分站,

歡迎您訂閱我的RSS ,或是前往本站發表意見。