Dot net In Blue

سه‌شنبه، فروردین ۲۲، ۱۳۸۵

خواندن فایل اکسل در asp.net

خواندن از فایل های اکسل( Microsoft Office Excel ) به کمک ADO.NET مطلبی است که در این مقاله قصد دارم با شما مطرح کنم ، در مقاله ای جداگانه نیز به نوشتن فایل های اکسل با دات نت( Dotnet ) و بخصوص توسط asp.net خواهیم پرداخت ! البته شاید بهتر بود که نوشتن فایل های اکسل را زود تر مطرح میکردم ولی چون سوال یکی از دوستان مرا به فکر نگارش این مقاله انداخت بهتردیدم ابتدا سوال این دوست عزیزم را در قالب همین مقاله پاسخ دهم و بعد مقاله تفریحی (!) بنویسم . چرا یک فایل اکسل را باید در یک برنامه asp.net بخواینم ؟؟ جواب : چون بیشتر اطلاعات طبقه بندی شده در قالب فایل های اکسل وجود دارد ! اکسل امکانات متنوعی به کاربران میدهد که یک بانک اطلاعاتی اکسز( Microsoft Office Access ) از چنین امکاناتی بی بهره است از طرف دیگر اکسل به علت همین امکانات از محبوبیت بیشتری بین کاربران برخوردار شده است و به همین دلیل ما باید بدانیم چطور اطلاعات را از بانک اطلاعاتی که کاربر برای ما آپلود میکند بخوانیم و در بانک اطلاعاتی ( database ، دیتابیس ) ذخیره کنیم . قبل از هرچیز در نگاه اول وقتی میدانیم OleDb اه ADO.NET فایل های اکسل را نیز ساپرت میکند اولین چیزی که به مغز ما خطور میکند این است که چه عالی ! اکسز هم ستون ( column ) و سطر ( row ) پس به ما این امکان را میدهد که به سادگی و مثل اکسز با آن رفتار کنیم ! اما اشتباه نکنید ! برای اینکه ما یتوانیم در اکسل یک میز ( table ، تیبل )داشته باشیم که مانند دیتابیس اکسز برای ما عمل کند سطر اول را باید به نام ستون ها اختصاص دهیم مثلا : LName FName Address City و قسمتی که حاوی اطلاعات است را باید به عنوان یک table تعریف کنیم و برای آن اسم بگذاریم ، مثلا اگر 20 ردیف داریم که حاوی اطلاعات است ، 20 ردیف و ردیف نام ستون ها را انتخاب میکنم ( highlight ، هایلایت ) سپس از منو Insert > Name> Define را انتخاب میکنم و نامی برای آن قسمت انتخاب میکنم مانند "Addresses" که این نام table ای میشود که میخوایم از آن اطلاعات استخراج کنیم .

کانکشن استریک به شکل زیر خواهد بود

CODE : string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" +

@"data source=E:\Inetpub\wwwroot\exel\NameAndAddress.xls;" +

"Extended Properties=Excel 8.0;";

مثال زیر یک نشان میدهد که چطور یک فایل اکسل را بخوانیم و در یک دیتاگرید ( DataGrid ) .یک پروژه جدید باز کنید و در وب فرم مقابل بک دیتاگیرد درگ کنید ، فضای نام System.Data.OleDb را به سرس صفحه اضافه کنید کد زیر را نیز وارد کنید :

private void

Page_Load(object sender, System.EventArgs e)

{

string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" +

@"data source=E:\Inetpub\wwwroot\exel\NameAndAddress.xls;" +

"Extended Properties=Excel 8.0;";

OleDbConnection objConn = new OleDbConnection(strConn);

string strSql = "Select * From Addresses";

OleDbCommand objCmd=new OleDbCommand(strSql,objConn);

objConn.Open();

DataGrid1.DataSource = objCmd.ExecuteReader();

DataGrid1.DataBind();

objConn.Close();

}

من در msdn کد زیر را نیز پیدا کردم :

Dim cn As

System.Data.OleDb.OleDbConnection

Dim cmd As System.Data.OleDb.OleDbDataAdapter

Dim ds As New System.Data.DataSet()

cn = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;" &

_ "data source=C:\myData.XLS;Extended Properties=Excel 8.0;")

' Select the data from Sheet1 of the workbook.

cmd = New System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", cn)

cn.Open()

cmd.Fill(ds)

cn.Close()

این را انواع select ها ! :

//To reference the complete used range of a worksheet, specify the sheet name followed by a dollar sign. For example

select * from [Sheet1$]

//To reference a specific range of addresses on a worksheet, specify the sheet name followed by a dollar sign and the range. For example:

select * from [Sheet1$A1:B10]

//To reference a named range, use the name of the range. For example:

select * from [MyNamedRange]

از دات نت آبی لذت ببرید !!!

2 Comments:

  • دست شما بابت فعال سازی سیستم کامنت درد نکنه ان شاء الله که در پناه حق سبز باشی . مقاله های که نوشتی رو ذخیره کردم ان شاء الله وقتی وقت کردم و خوندم نظر در مورد آنها هم خواهم داد.

    By Anonymous ناشناس, at ۱:۴۳ قبل‌ازظهر  

  • سلام با تشکر من یک وب سایت با ASP.net طراحی کردم اما حالا نمی دونم برای اینکه روی هاست بریزمش کانکشن استرینگم رو چجوری باید ادرس دهی کنم
    با تشکر

    By Anonymous ناشناس, at ۴:۲۹ قبل‌ازظهر  

ارسال یک نظر

<< Home