轉(zhuǎn)帖|其它|編輯:郝浩|2012-01-04 21:12:26.000|閱讀 938 次
概述:本文采用第三方Aspose組件技術(shù)實(shí)現(xiàn)了Excel文件與數(shù)據(jù)庫之間的數(shù)據(jù)導(dǎo)入,導(dǎo)出交換功能。通過這樣的交換技術(shù),可以以Excel作為數(shù)據(jù)交換中介,能很方便實(shí)現(xiàn)不同數(shù)據(jù)庫,不同系統(tǒng)之間的數(shù)據(jù)交換。因此,該技術(shù)在現(xiàn)代信息管理系統(tǒng)中有著十分重要的意義。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
一、引言
隨著互聯(lián)網(wǎng)和計(jì)算機(jī)軟件的不斷發(fā)展, 基于B/S 結(jié)構(gòu)比傳統(tǒng)C/S結(jié)構(gòu)有著很多優(yōu)點(diǎn),因而越來越受到人們的青睞。其優(yōu)點(diǎn)包括系統(tǒng)維護(hù)升級方便,客戶端無需安裝軟件等等。因此,各種各樣的基于B/S結(jié)構(gòu)的 軟件如企業(yè)信息管理系統(tǒng)、電子商務(wù)服務(wù)系統(tǒng)等被廣泛使用。由于微軟辦公系統(tǒng)Excel電子表格軟件有著強(qiáng)大的數(shù)據(jù)處理能力,很多企業(yè),單位都會選擇其作為 業(yè)務(wù)數(shù)據(jù)存取,查詢工具。因此,在企業(yè)的信息管理系統(tǒng)中,通常需要對Excel文件和數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交換。即業(yè)務(wù)數(shù)據(jù)需要導(dǎo)入現(xiàn)有企業(yè)使用的B/S架構(gòu)系 統(tǒng)中,或從現(xiàn)有系統(tǒng)中導(dǎo)出數(shù)據(jù)到Excel表格。這種數(shù)據(jù)導(dǎo)入導(dǎo)出工作非常繁瑣,而且處理效率也不高[1-2]。本文為使數(shù)據(jù)導(dǎo)入,導(dǎo)出方便,采用第三方 Aspose軟件實(shí)現(xiàn)了Excel與數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交換,即從數(shù)據(jù)庫導(dǎo)出Excel,或?qū)xcel數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫。文中采用 Asp.Net,SQLServer 2000技術(shù),討論數(shù)據(jù)交換的主要技術(shù)以及其實(shí)現(xiàn)方法。
二、數(shù)據(jù)導(dǎo)入技術(shù)以及其實(shí)現(xiàn)
Aspose是一個(gè)功能十分強(qiáng)大的第三方控件,可以用來操作word,excel,ppt等文件,用這個(gè)控件來導(dǎo)入、導(dǎo)出數(shù)據(jù)非常方便。目 前,Aspose支持的語言有.NET,Java等。Aspose.Cells是操作微軟Excel電子表格中的組件。該組件除支持電子表格生成和其他基 本文件格式的功能外,還支持一系列先進(jìn)的功能,包括允許從不同的數(shù)據(jù)源導(dǎo)入到電子表格中,或添加常見和復(fù)雜的數(shù)學(xué),日期,財(cái)務(wù),文字公式等功能。同時(shí)也支 持圖表,圖片,評論,圖形對象和控制等操作。
將Excel文件導(dǎo)到數(shù)據(jù)庫的一般步驟如下:使用B/S系統(tǒng)提供的文件上傳功能,把文件上傳到服 務(wù)器,再由Aspose.Cells控件對Excel進(jìn)行操縱,把數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫。本文以SQL Server 2000為例,詳細(xì)說明數(shù)據(jù)導(dǎo)入整個(gè)過程。在使用Aspose組件時(shí),首先需要在VS工程文件引入Aspose.Cells.dll動態(tài)類[3]。并在使 用該組件的文件導(dǎo)入如下包:
using Aspose.Cells;
//以下代碼實(shí)現(xiàn)將Excel文件上傳到服務(wù)器
string filePath = Server.MapPath("/uploads/");
fUpload.PostedFile.SaveAs(filePath+fUpload.FileName);
//以下代碼使用Aspose技術(shù)實(shí)現(xiàn)從磁盤中讀入Excel表格
//創(chuàng)建一個(gè)工作簿對象,并使用Excel文件路徑打開一個(gè)Excel文件
Workbook workbook = new Workbook();
workbook.Open(filePath+ fUpload.FileName);
//取得指向sheet0的Worksheet對象
Worksheet worksheet = workbook.Worksheets[0];
Cells cells = worksheet.Cells;
//循環(huán)讀取所有行,并讀取Excel文件中的每一列。在這里可以實(shí)現(xiàn)不同數(shù)據(jù)格式的轉(zhuǎn)換
for (int i = 0; i < cells.Rows.Count; i++)
{
string name= cells[i, 0].Value.Tostring();
string sex=cells[i,1].Value.Tostring();
If(sex==”1”) //數(shù)據(jù)格式轉(zhuǎn)換以實(shí)現(xiàn)數(shù)據(jù)遷移
sex=“男”;
else
sex=”女”;
…
}
//以下代碼實(shí)現(xiàn)把從Excel表讀取到的數(shù)據(jù)存入SQLServer 2000數(shù)據(jù)庫中。
SqlConnection conn = new SqlConnection();//創(chuàng)建連接對象
conn.ConnectionString = ConfigurationManager.AppSettings ["sqlcon"]; //sqlconn為web.config連接數(shù)據(jù)庫串
conn.Open();//打開數(shù)據(jù)庫
SqlCommand cmd = new SqlCommand("insert users into values(name, sex,…. ", conn);
cmd.ExecuteNonQuery();
conn.Close();//關(guān)閉數(shù)據(jù)庫
三、數(shù)據(jù)導(dǎo)出技術(shù)以及其實(shí)現(xiàn)
在實(shí)際的應(yīng)用中,有時(shí)還需將數(shù)據(jù)從數(shù)據(jù)庫導(dǎo)出到Excel表格,以供業(yè)務(wù)人員在Excel表中根據(jù)業(yè)務(wù)需要實(shí)現(xiàn)數(shù)據(jù)匯總,查詢,處理等操作。
//下面從數(shù)據(jù)庫讀取需要導(dǎo)出的數(shù)據(jù)
string conn = ConfigurationManager.AppSettings["sqlcon"];
DataSet ds= new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(select * from users", conn);
adapter.Fill(ds);
//以下利用Apose.Cells組件將從數(shù)據(jù)庫中查詢的數(shù)據(jù)導(dǎo)出到Excel表格中,并保存在指定的路徑。
Workbook workbook = new Workbook();
workbook.Open(Server.MapPath("/uploads/"+fileName)//導(dǎo)入數(shù)據(jù)后存放文件名
Worksheet sheet = workbook.Worksheets[0];
sheet.Cells.ImportDataTable(ds.Tables[0], false, 0, 0);
while(workbook.Worksheets.Count>1)workbook.Worksheets.RemoveAt(workbook.Worksheets.Count - 1);
//裝Excel表保存到磁盤中去
workbook.Save(Server.MapPath("/uploads/"+fileName);
//利用Asp.net技術(shù),提供excel文件讓用戶下載
Response.Redirect("/uploads/" + fileName);
四、結(jié)束語
本文采用第三方Aspose組件技術(shù)實(shí)現(xiàn)了Excel文件與數(shù)據(jù)庫之間的數(shù)據(jù)導(dǎo)入,導(dǎo)出交換功能。通過這樣的交換技術(shù),可以以Excel作為數(shù)據(jù)交換中介,能很方便實(shí)現(xiàn)不同數(shù)據(jù)庫,不同系統(tǒng)之間的數(shù)據(jù)交換。因此,該技術(shù)在現(xiàn)代信息管理系統(tǒng)中有著十分重要的意義。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)絡(luò)轉(zhuǎn)載