asp.net(C#)操作excel(上路篇)
更新時間:2010年02月25日 09:18:52 作者:
C#操作excel(上路篇)
1.作業(yè)環(huán)境
開發(fā)環(huán)境:vs2005 /vs2008
數(shù)據(jù)庫:sql2005
excel:2003
首先
在vs加入com組件(當(dāng)然也可以加入.net下的excel組件):

之后vs引用子目錄會多出下面三個dll:

簡單操作流程如下:
using Excel;
// from bill example
public void writeExcelAdvance(String outputFile)
{
string[,] myData =
{
{ "車牌號", "類型", "品 牌", "型 號", "顏 色", "附加費證號", "車架號" },
{ "浙KA3676", "危險品", "貨車", "鐵風(fēng)SZG9220YY", "白", "1110708900", "022836" },
{ "浙KA4109", "危險品", "貨車", "解放CA4110P1K2", "白", "223132", "010898" },
{ "浙KA0001A", "危險品", "貨車", "南明LSY9190WS", "白", "1110205458", "0474636" },
{ "浙KA0493", "上普貨", "貨車", "解放LSY9190WS", "白", "1110255971", "0094327" },
{ "浙KA1045", "普貨", "貨車", "解放LSY9171WCD", "藍(lán)", "1110391226", "0516003" },
{ "浙KA1313", "普貨", "貨車", "解放9190WCD", "藍(lán)", "1110315027", "0538701" },
{ "浙KA1322", "普貨", "貨車", "解放LSY9190WS", "藍(lán)", "24323332", "0538716" },
{ "浙KA1575", "普貨", "貨車", "解放LSY9181WCD", "藍(lán)", "1110314149", "0113018" },
{ "浙KA1925", "普貨", "貨車", "解放LSY9220WCD", "藍(lán)", "1110390626", "00268729" },
{ "浙KA2258", "普貨", "貨車", "解放LSY9220WSP", "藍(lán)", "111048152", "00320" }
};
//引用Excel Application類別
Application myExcel = null;
//引用活頁簿類別
Workbook myBook = null;
//引用工作表類別
Worksheet mySheet = null;
//引用Range類別
Range myRange = null;
//開啟一個新的應(yīng)用程式
myExcel = new Microsoft.Office.Interop.Excel.Application();
//打開一個已經(jīng)存在的excel excel2003和2007版打開參數(shù)不一樣,具體可以上網(wǎng)上去查:
//excelSql.Workbooks.Open(@"C:\08.xls"(已經(jīng)存在的excel路徑), Type.Missing, Type.Missing, Type.Missing, Type.Missing,
//Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,Type.Missing,Type.Missing);
//加入新的活頁簿
myExcel.Workbooks.Add(true);
//停用警告訊息
myExcel.DisplayAlerts = false;
//讓Excel文件可見
myExcel.Visible = true;
//引用第一個活頁簿
myBook = myExcel.Workbooks[1];
//設(shè)定活頁簿焦點
myBook.Activate();
//引用第一個工作表
mySheet = (Worksheet)myBook.Worksheets[1];
//命名工作表的名稱為 "Array"
mySheet.Name = "Cells";
//設(shè)工作表焦點
mySheet.Activate();
int a = 0;
int UpBound1 = myData.GetUpperBound(0);
//二維陣列數(shù)上限
int UpBound2 = myData.GetUpperBound(1);
//二維陣列數(shù)上限
//寫入報表名稱
myExcel.Cells[1, 4] = "普通報表";
//以下的Select方法可省略,加速Excel運行,但VBA有些功能必須要用到Select方法。
//以下的Select方法可省略,加速Excel運行,但VBA有些功能必須要用到Select方法。
//逐行寫入數(shù)據(jù)
for (int i = 0; i < UpBound1; i++)
{
for (int j = 0; j < UpBound2; j++)
{
//以單引號開頭,表示該單元格為純文字
a++;
//用offset寫入陣列資料
myRange = mySheet.get_Range("A2", Type.Missing);
myRange.get_Offset(i, j).Select();
myRange.Value2 = "'" + myData[i, j];
//用Cells寫入陣列資料
myRange.get_Range(myExcel.Cells[2 + i, 1 + j], myExcel.Cells[2 + i, 1 + j]).Select();
myExcel.Cells[2 + i, 1 + j] = "'" + myData[i, j];
}
}
//加入新的工作表在第1張工作表之后
myBook.Sheets.Add(Type.Missing, myBook.Worksheets[1], 1, Type.Missing);
//引用第2個工作表
mySheet = (Worksheet)myBook.Worksheets[2];
//命名工作表的名稱為 "Array"
mySheet.Name = "Array";
//Console.WriteLine(mySheet.Name);
//寫入報表名稱
myExcel.Cells[1, 4] = "普通報表";
//設(shè)定范圍
myRange = (Range)mySheet.get_Range(myExcel.Cells[2, 1], myExcel.Cells[UpBound1 + 1, UpBound2 + 1]);
myRange.Select();
//用陣列一次寫入資料
myRange.Value2 = "'" + myData;
//設(shè)定儲存路徑
//string PathFile = Directory.GetCurrentDirectory() + @"\button4.xls";
//另存活頁簿
myBook.SaveAs(outputFile, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing
, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
//關(guān)閉活頁簿
myBook.Close(false, Type.Missing, Type.Missing);
//關(guān)閉Excel
myExcel.Quit();
//釋放Excel資源
System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel);
myBook = null;
mySheet = null;
myRange = null;
myExcel = null;
GC.Collect();
復(fù)制代碼 代碼如下:
using Excel;
// from bill example
public void writeExcelAdvance(String outputFile)
{
string[,] myData =
{
{ "車牌號", "類型", "品 牌", "型 號", "顏 色", "附加費證號", "車架號" },
{ "浙KA3676", "危險品", "貨車", "鐵風(fēng)SZG9220YY", "白", "1110708900", "022836" },
{ "浙KA4109", "危險品", "貨車", "解放CA4110P1K2", "白", "223132", "010898" },
{ "浙KA0001A", "危險品", "貨車", "南明LSY9190WS", "白", "1110205458", "0474636" },
{ "浙KA0493", "上普貨", "貨車", "解放LSY9190WS", "白", "1110255971", "0094327" },
{ "浙KA1045", "普貨", "貨車", "解放LSY9171WCD", "藍(lán)", "1110391226", "0516003" },
{ "浙KA1313", "普貨", "貨車", "解放9190WCD", "藍(lán)", "1110315027", "0538701" },
{ "浙KA1322", "普貨", "貨車", "解放LSY9190WS", "藍(lán)", "24323332", "0538716" },
{ "浙KA1575", "普貨", "貨車", "解放LSY9181WCD", "藍(lán)", "1110314149", "0113018" },
{ "浙KA1925", "普貨", "貨車", "解放LSY9220WCD", "藍(lán)", "1110390626", "00268729" },
{ "浙KA2258", "普貨", "貨車", "解放LSY9220WSP", "藍(lán)", "111048152", "00320" }
};
//引用Excel Application類別
Application myExcel = null;
//引用活頁簿類別
Workbook myBook = null;
//引用工作表類別
Worksheet mySheet = null;
//引用Range類別
Range myRange = null;
//開啟一個新的應(yīng)用程式
myExcel = new Microsoft.Office.Interop.Excel.Application();
//打開一個已經(jīng)存在的excel excel2003和2007版打開參數(shù)不一樣,具體可以上網(wǎng)上去查:
//excelSql.Workbooks.Open(@"C:\08.xls"(已經(jīng)存在的excel路徑), Type.Missing, Type.Missing, Type.Missing, Type.Missing,
//Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,Type.Missing,Type.Missing);
//加入新的活頁簿
myExcel.Workbooks.Add(true);
//停用警告訊息
myExcel.DisplayAlerts = false;
//讓Excel文件可見
myExcel.Visible = true;
//引用第一個活頁簿
myBook = myExcel.Workbooks[1];
//設(shè)定活頁簿焦點
myBook.Activate();
//引用第一個工作表
mySheet = (Worksheet)myBook.Worksheets[1];
//命名工作表的名稱為 "Array"
mySheet.Name = "Cells";
//設(shè)工作表焦點
mySheet.Activate();
int a = 0;
int UpBound1 = myData.GetUpperBound(0);
//二維陣列數(shù)上限
int UpBound2 = myData.GetUpperBound(1);
//二維陣列數(shù)上限
//寫入報表名稱
myExcel.Cells[1, 4] = "普通報表";
//以下的Select方法可省略,加速Excel運行,但VBA有些功能必須要用到Select方法。
//以下的Select方法可省略,加速Excel運行,但VBA有些功能必須要用到Select方法。
//逐行寫入數(shù)據(jù)
for (int i = 0; i < UpBound1; i++)
{
for (int j = 0; j < UpBound2; j++)
{
//以單引號開頭,表示該單元格為純文字
a++;
//用offset寫入陣列資料
myRange = mySheet.get_Range("A2", Type.Missing);
myRange.get_Offset(i, j).Select();
myRange.Value2 = "'" + myData[i, j];
//用Cells寫入陣列資料
myRange.get_Range(myExcel.Cells[2 + i, 1 + j], myExcel.Cells[2 + i, 1 + j]).Select();
myExcel.Cells[2 + i, 1 + j] = "'" + myData[i, j];
}
}
//加入新的工作表在第1張工作表之后
myBook.Sheets.Add(Type.Missing, myBook.Worksheets[1], 1, Type.Missing);
//引用第2個工作表
mySheet = (Worksheet)myBook.Worksheets[2];
//命名工作表的名稱為 "Array"
mySheet.Name = "Array";
//Console.WriteLine(mySheet.Name);
//寫入報表名稱
myExcel.Cells[1, 4] = "普通報表";
//設(shè)定范圍
myRange = (Range)mySheet.get_Range(myExcel.Cells[2, 1], myExcel.Cells[UpBound1 + 1, UpBound2 + 1]);
myRange.Select();
//用陣列一次寫入資料
myRange.Value2 = "'" + myData;
//設(shè)定儲存路徑
//string PathFile = Directory.GetCurrentDirectory() + @"\button4.xls";
//另存活頁簿
myBook.SaveAs(outputFile, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing
, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
//關(guān)閉活頁簿
myBook.Close(false, Type.Missing, Type.Missing);
//關(guān)閉Excel
myExcel.Quit();
//釋放Excel資源
System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel);
myBook = null;
mySheet = null;
myRange = null;
myExcel = null;
GC.Collect();
您可能感興趣的文章:
- c#將Excel數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫的實現(xiàn)代碼
- ASP.NET(C#)讀取Excel的文件內(nèi)容
- C#如何將DataTable導(dǎo)出到Excel解決方案
- C#數(shù)據(jù)導(dǎo)入/導(dǎo)出Excel文件及winForm導(dǎo)出Execl總結(jié)
- C# WinForm導(dǎo)出Excel方法介紹
- C#將html table 導(dǎo)出成excel實例
- C#導(dǎo)入導(dǎo)出EXCEL文件的代碼實例
- c#利用Excel直接讀取數(shù)據(jù)到DataGridView
- C#連接Excel2003和Excel2007以上版本做數(shù)據(jù)庫的連接字符串
- 讓C# Excel導(dǎo)入導(dǎo)出 支持不同版本Office
相關(guān)文章
ASP.NET自帶對象JSON字符串與實體類的轉(zhuǎn)換
這篇文章主要介紹了ASP.NET自帶對象JSON字符串與實體類的轉(zhuǎn)換,感興趣的小伙伴們可以參考一下2016-07-07
Coolite優(yōu)化導(dǎo)出Excel文件實現(xiàn)代碼
Coolite 優(yōu)化 導(dǎo)出 Excel 文件??梢栽O(shè)定列寬和導(dǎo)出列選擇。2010-03-03
Asp.net中的GridView導(dǎo)出遇到的兩個問題和解決方法
Asp.net下GridView導(dǎo)出遇到的兩個問題與解決方法,需要的朋友可以參考一下。2009-12-12
asp.net中Null在從數(shù)據(jù)庫讀取的時候的一點點小技巧
我們先看下面的一段代碼,這段代碼其實很平常,也是我們平時做項目很常用的一段2012-04-04
asp頁面和Asp.net頁面?zhèn)髦形膮?shù)UrlEncode編碼以及接收解碼
在asp中加一個鏈接,指向asp.net網(wǎng)頁,但asp.net的網(wǎng)址是經(jīng)過HttpUtility.UrlEncode轉(zhuǎn)換和HttpUtility.UrlDecode解碼的,而asp的server.urlencode卻和HttpUtility.UrlEncode的編碼方式不一樣.2010-04-04
IE10下Gridview后臺設(shè)置行高不起作用解決方法
GridView1.HeaderStyle.Height=17發(fā)現(xiàn)在IE10 中不起作用,經(jīng)過反復(fù)測試修改為e.Row.Cells[0].Height=17即可解決問題,有類似問題的朋友可以參考下哈2013-04-04
ASP.NET數(shù)據(jù)綁定之DataList控件實戰(zhàn)篇
這篇文章主要為大家介紹了ASP.NET數(shù)據(jù)綁定中的DataList控件,DataList控件以表的形式呈現(xiàn)數(shù)據(jù),通過該控件,您可以使用不同的布局來顯示數(shù)據(jù)記錄,對DataList控件感興趣的小伙伴們可以參考一下2016-01-01

