سلام
چطوری میتونم با سی شارپ در یک فایل اکسل یک کلمه جستجو کنم و وقتی اون کلمه در یک سطر پیدا کرد کل اون سطر به عنوان رشته برگردونه ؟
سلام
چطوری میتونم با سی شارپ در یک فایل اکسل یک کلمه جستجو کنم و وقتی اون کلمه در یک سطر پیدا کرد کل اون سطر به عنوان رشته برگردونه ؟
خوب برای انجام این چیکار باید بکنم ؟میتونی فایل اکسل رو باز کنی و سطر به سطر بخونی
تا ریختن اطلاعات توی دیتا گرید ویو رو نوشتم فقط کافیه دستور اس کیول رو تغییر بدی (به جای SheetName اسم جدول مورد نظر رو بذار، اون تکست باکس هم تشریفاتی بود)
از کمبو باکس هم باید نوع فایل ورودی رو انتخاب کنی.
موفق باشید
آخرین ویرایش به وسیله سوداگر : پنج شنبه 31 فروردین 1391 در 14:55 عصر دلیل: ضمیمه اصلاح شد
من کدی که دوستمون نوشتن رو ندیدم و نمیدونم از چه روشی استفاده کردن. ولی چون گفتن دستور sql حدس میزنم فایل اکسل رو با یه کانکشن OLE DB باز کردن.
به جز روش بالا میتونی کتابخانه Microsoft.Interop.Excel رو به پروژهات اضافه کنی و فایل اکسل را با اون باز کنی. با این کتابخانه میتونی خروجی اکسل هم داشته باشی.
اون فضای نامی که دوستمون فرمودند Microsoft.Office.Interop.Excel هستش که راه حل مناسبی برای این کار هست ولی به این 3 دلیلی که در سایت مایکروسافت دیدم (جواب مدیر بخش بود)، روش OleDb بهینه تر هست:
موفق باشید
1. In order to use the "Interop" the Excel application must be present. Excel should not be run server-side, so using Interop is usually not a good approach for asp.net solutions
2. Interop will usually be slower than other methods for working with a spreadsheet's data (as opposed to the tools provided by the UI).
3. Most controls (such as gridview) are designed to accept a standardized data source, such as OLE DB (ADO.NET) delivers. The interop doesn't provide data in that manner, so there'd be a lot more "manual labor" involved to extract that data via the Interop.
این فضا و کلاسهای اون برنامه اکسل رو باز میکنه و هر کاری که خواستی میتونی با فایل انجام بدی. درصورتی که هدفت فقط خوندن اطلاعات هست استفاده از OLEDB بهتره ولی اگه میخوای یه خروجی اکسل داشته باشی بهتره از این کلاس استفاده کنی.
براساس متنی که دوستمون گذاشتن:OLEDB سریعتره و چون خروجی استانداردی داره واسه استفاده تو Gridview مناسبتره. به علاوه اینکه چون اون کتابخانه از خود برنامه استفاده میکنه استفاده از OLEDB تو برنامههای سمت سرور مناسب تره.
کاملا به جوابم رسیدم ممنون
حالا اگه یه قطعه کد و مثال از اون روش کتابخونه رو هم بگید خیلی بیشتر ممنون میشم![]()
DataTable people = (DataTable)Session["people"];
// Create excel file.
ExcelFile ef = new ExcelFile();
ExcelWorksheet ws = ef.Worksheets.Add("DataSheet");
ws.InsertDataTable(people, "A1", true);
Response.Clear();
// Stream file to browser, in required type.
switch (this.RadioButtonList1.SelectedValue)
{
case "XLS":
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment; filename="
+ "Report.xls");
ef.SaveXls(Response.OutputStream);
break;
case "XLSX":
Response.ContentType = "application/vnd.openxmlformats";
Response.AddHeader("Content-Disposition", "attachment; filename="
+ "Report.xlsx");
// With XLSX it is a bit more complicated as MS Packaging API
// can't write directly to Response.OutputStream.
// Therefore we use temporary MemoryStream.
MemoryStream ms = new MemoryStream();
ef.SaveXlsx(ms);
ms.WriteTo(Response.OutputStream);
break;
}
Response.End();
کد رو هم از اینجا کپی کردم.
Using Microsoft.Office.Interop.Excel
تو این لینکم یه مثال داره.
http://www.dotnetperls.com/excel
فایل اکسل با فرمت 2003 ذخیره کردم و اون مشکل حل شد اما این بار برای این بخش خطا میده :dataAdapter.Fill(dt);این هم متن خطا هست :لازم هست که به غیر از ویژوال استدیو برنامه دیگه ای نصب کنم ؟The Microsoft Jet database engine could not find the object 'SheetName'. Make sure the object exists and that you spell its name and the path name correctly.
سلام من اشکال پیدا کردم ایراد از این قسمت بوذ که صحیحش این هستstring strSQL = "SELECT * FROM [sheet1$]";الان هیج خطایی نمیده حالا چجوری میتونم بفهمم که درست عمل کزده ؟ یعنی این اطلاعات که ذخیره شده ببینم ؟
متشکرم
من علامت $ رو گذاشته بودم ولی بازم ارور میداداما مشکل از کروشه ها بود.
کافیه یه دیتا گرید ویو به پروژه اضافه کنی و کد زیر:یعنی این اطلاعات که ذخیره شده ببینم ؟
dataGridView1.DataSource = dt;
ضمیمه بالا هم اصلاح شد
موفق باشید
آخرین ویرایش به وسیله سوداگر : جمعه 01 اردیبهشت 1391 در 22:29 عصر