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 =
{
{ "車牌號", "類型", "品 牌", "型 號", "顏 色", "附加費(fèi)證號", "車架號" },
{ "浙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è)定活頁簿焦點(diǎn)
myBook.Activate();
//引用第一個工作表
mySheet = (Worksheet)myBook.Worksheets[1];
//命名工作表的名稱為 "Array"
mySheet.Name = "Cells";
//設(shè)工作表焦點(diǎn)
mySheet.Activate();
int a = 0;
int UpBound1 = myData.GetUpperBound(0);
//二維陣列數(shù)上限
int UpBound2 = myData.GetUpperBound(1);
//二維陣列數(shù)上限
//寫入報表名稱
myExcel.Cells[1, 4] = "普通報表";
//以下的Select方法可省略,加速Excel運(yùn)行,但VBA有些功能必須要用到Select方法。
//以下的Select方法可省略,加速Excel運(yùn)行,但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 =
{
{ "車牌號", "類型", "品 牌", "型 號", "顏 色", "附加費(fèi)證號", "車架號" },
{ "浙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è)定活頁簿焦點(diǎn)
myBook.Activate();
//引用第一個工作表
mySheet = (Worksheet)myBook.Worksheets[1];
//命名工作表的名稱為 "Array"
mySheet.Name = "Cells";
//設(shè)工作表焦點(diǎn)
mySheet.Activate();
int a = 0;
int UpBound1 = myData.GetUpperBound(0);
//二維陣列數(shù)上限
int UpBound2 = myData.GetUpperBound(1);
//二維陣列數(shù)上限
//寫入報表名稱
myExcel.Cells[1, 4] = "普通報表";
//以下的Select方法可省略,加速Excel運(yùn)行,但VBA有些功能必須要用到Select方法。
//以下的Select方法可省略,加速Excel運(yùn)行,但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ù)庫的實(shí)現(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實(shí)例
- C#導(dǎo)入導(dǎo)出EXCEL文件的代碼實(shí)例
- c#利用Excel直接讀取數(shù)據(jù)到DataGridView
- C#連接Excel2003和Excel2007以上版本做數(shù)據(jù)庫的連接字符串
- 讓C# Excel導(dǎo)入導(dǎo)出 支持不同版本Office
相關(guān)文章
Visual?Studio2022創(chuàng)建WebAPI項目步驟記錄
不管是前后端分離還是提供數(shù)據(jù)服務(wù),WebApi使用的越來越廣泛,而且.NET Core也是我們.NET開發(fā)人員未來發(fā)展的趨勢,所以說學(xué)會使用.NET Core Api是非常有必要的,這篇文章主要給大家介紹了關(guān)于Visual?Studio2022創(chuàng)建WebAPI項目步驟的相關(guān)資料,需要的朋友可以參考下2024-01-01.Net插件框架Managed Extensibility Framework簡介
這篇文章介紹了.Net插件框架Managed Extensibility Framework,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07創(chuàng)建一個完整的ASP.NET Web API項目
ASP.NET Web API具有與ASP.NET MVC類似的編程方式,ASP.NET Web API不僅僅具有一個完全獨(dú)立的消息處理管道,而且這個管道比為ASP.NET MVC設(shè)計的管道更為復(fù)雜,功能也更為強(qiáng)大。下面創(chuàng)建一個簡單的Web API項目,需要的朋友可以參考下2015-10-10MVC 5 第二章 MVC5應(yīng)用程序項目結(jié)構(gòu)
通過本章學(xué)習(xí),你將了解到一個MVC 5應(yīng)用程序的項目組成以及項目文件的相關(guān)信息,從而更好地架構(gòu)設(shè)計出自己的項目結(jié)構(gòu)。2014-06-06ASP.NET中根據(jù)XML動態(tài)創(chuàng)建使用WEB組件
ASP.NET中根據(jù)XML動態(tài)創(chuàng)建使用WEB組件...2006-09-09asp.net Javascript獲取CheckBoxList的value
最近在做一個BS的小項目,記得自己搞asp.net的時候,還是兩年以前,大部分的東西只是有點(diǎn)印象,忘得差不多了,所以這次也算是溫習(xí)的過程吧,一邊學(xué)習(xí),一邊趕工,呵呵呵。。。。2009-12-12