[ASP.Net]在ASP.Net中,用C#動態產生Excel檔-上
(1)使用Microsoft.Office.Interop.Excel的權限設置
加入COM+物件,Microsoft Excel 11.0 Object Library 
這時你可以 using Microsoft.Office.Interop.Excel;
但是當你實際呼叫去new一個Application物件時,
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
卻會發生權限不足的問題。所以我們要先替ASP.Net設定使用COM物件的權限。
在 開始->執行->輸入dcomcnfg 會出現元件服務的視窗。
展開樹狀列表中的DCOM設定,可以看到Microsoft Excel 應用程式(Application)的東西。點選滑鼠右鍵可以看到,如下畫面:
遇到權限問題,當然要做安全設定啦。在安全設定裏面依照需求開放權限,啟動和啟用權限是設定啟動COM物件的權限,存取權限是設定存取COM物件建立的東西的權限。
在這裡我將每個權限都設成自訂,然後點選編輯,接著就會出現常見的安全性設定畫面。在群組或使用者名稱裡面新增ASP.Net、IUSER_電腦名、IWAN_電腦名稱,如果你是使用Windows 2003 server那麼就要新增IIS_WPG、Network Service。
(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);
[第1、2頁]
