PDA

View Full Version : حرفه ای: انتقال اطلاعات از دیتاگرید به اکسل با استفاده از oledb و بدون کمک Interop.Excel -آیا ممکن است؟



Sal_64
شنبه 05 اسفند 1391, 20:04 عصر
سلام برای انتقال اطلاعات از دیتاگرید به اکسل حتما باید از Interop.Excel استفاده کرد ؟ تشکر

docendo
شنبه 05 اسفند 1391, 20:28 عصر
اول از همه این کد را توی اول برنامه بنویسی;
using Microsoft.Office.Interop.Excel


دوم Interop.Excel سلیقه ای است بنا به ذوق و اندیشه خودتان باید بنویسید

سوم اینکه یک کلاسه برایInterop.Excel درست کنید

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


class Program
{
const string fileName = "C:\\Book1.xlsx";
const string topLeft = "A1";
const string bottomRight = "A4";
const string graphTitle = "Graph Title";
const string xAxis = "Time";
const string yAxis = "Value";
static void Main()
{
// Open Excel and get first worksheet. var application = new Application();
var workbook = application.Workbooks.Open(fileName);
var worksheet = workbook.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet;
// Add chart.
var charts = worksheet.ChartObjects() as Microsoft.Office.Interop.Excel.ChartObjects;
var chartObject = charts.Add(60, 10, 300, 300) as Microsoft.Office.Interop.Excel.ChartObject;
var chart = chartObject.Chart;
// Set chart range.
var range = worksheet.get_Range(topLeft, bottomRight);
chart.SetSourceData(range);

Set chart properties. chart.ChartType = Microsoft.Office.Interop.Excel.XlChartType.xlLine;
chart.ChartWizard(Source: range, Title: graphTitle, CategoryTitle: xAxis, ValueTitle: yAxis);
// Save. workbook.Save();
} }

Sal_64
یک شنبه 06 اسفند 1391, 20:46 عصر
سلام-منظور من این بود که آیا حتما باید Microsoft.Office.Interop.Excel به References اضافه بشه؟

Esmail Solhkhah
یک شنبه 06 اسفند 1391, 23:13 عصر
سلام-منظور من این بود که آیا حتما باید Microsoft.Office.Interop.Excel به References اضافه بشه؟

در این حالت بله ، چون برنامه شما داره از COM ریجستر شده اکسل استفاده میکنه (پس تو سیستم مقصد هم باید اون COM موجود بوده و ریجستر شده باشه)

برای اینکه از قید نصب آفیس و یا بررسی وجود این COM خلاص بشید میتونید از کامپوننتهایی مثل EMS Advanced Excel Report استفاده کنید.

موفق باشید.

Sal_64
دوشنبه 07 اسفند 1391, 09:24 صبح
سلام - تشکر - ببینید برای انتقال اطلاعات از اکسل به دیتاگرید از Oledb استفاده میشه که جز .net fraemwork و هیچ dll در کنار فایل برنامه اضافه نمیشه - آیا برای عکس این عمل هم راهی وجود داره که dll در کنار فایل اصلی برنامه اضافه نشه- احتمالا این کامپوننت هم از این قاعده مستثنا نیست و dll اضافه ای خواهد کرد؟ درسته؟ تشکر

Esmail Solhkhah
سه شنبه 08 اسفند 1391, 00:02 صبح
برای انتقال اطلاعات از اکسل به دیتاگرید از Oledb استفاده میشه که جز .net fraemwork و هیچ dll در کنار فایل برنامه اضافه نمیشهدرمورد OLEDB و COM اکسل گوگل کنید ،تو پست قبلی هم گفتم اگه دارید از COM مربوطه استفاده میکنید باید رو سیستم مقصد باشه

ولی در مورد اون کامپپوننتی که گفتم نیاز به درگیری با نصب آفیس یا COM مربوطه ندارید ولی طبیعتا این کامپوننت یه سری DLL دات نت بیس داره که نیاز دارید تو مسیر نصب برنامتون

داشته باشید یا اینکه تو GAC نصب کنید ،ضمنا ساین شده هستن پس نگران عدم نصب در GAC نباشید.

موفق باشید.

Sal_64
سه شنبه 08 اسفند 1391, 17:54 عصر
سلام - بابت لینک دانلود کامپوننت تشکر- یه سوال چطوری در زمان اکسپورت از شر هدر دیتاگرید خلاص شم؟ تشکر

Esmail Solhkhah
سه شنبه 08 اسفند 1391, 23:04 عصر
یه سوال چطوری در زمان اکسپورت از شر هدر دیتاگرید خلاص شم؟

خاصیت AllowCaptions کنترل مربوطه رو False کنید.

موفق باشید.

Sal_64
چهارشنبه 09 اسفند 1391, 21:02 عصر
سلام- بازم تشکر - آیا این کامپوننت قابلیت نمایش ستونها از سمت راست صفحه هم داره؟

Esmail Solhkhah
پنج شنبه 10 اسفند 1391, 00:55 صبح
سلام- بازم تشکر
سلام
برای تشکر ، دکمه تشکر Please


آیا این کامپوننت قابلیت نمایش ستونها از سمت راست صفحه هم داره؟

Help و Demo نصب شده را بررسی کنید.

موفق باشید.

Sal_64
شنبه 12 اسفند 1391, 15:45 عصر
سلام

Help و Demo نصب شده را بررسی کنید.demo که با حداقل کد نویسی بود
و از help هم چیزی دستگیرم نشد

Esmail Solhkhah
شنبه 12 اسفند 1391, 22:53 عصر
demo که با حداقل کد نویسی بود

همونطور که دیدید کنترل مربوطه پراپرتیهاش خیلی زیاده ، فایل Designer فرم رو ببینید متوجه میشید چه چیزهایی تغییر کرده


و از help هم چیزی دستگیرم نشد
دوست عزیز بنده درمورد پست 7 شما حدود یه دقیقه شایدم کمتر وقت گذاشتم ، خودم قبلا این قابلیت رو اصلا نیاز نداشتم و استفاده هم نکرده بودم ولی فقط با یه نگاه به پراپرتیهای کنترل مربوطه مشخص شد جواب چیه.

شما هم اگه ناراحت نشید پیشنهاد میکنم یکم با حوصله تر بررسی کنید.

موفق باشید.

Sal_64
یک شنبه 13 اسفند 1391, 09:48 صبح
سلام
ببینید ظاهرا شما از این کامپوننت به کرات استفاده کردی
وقتی جستجو میکردم حتی به نمونه برنامه ای هم برخوردم که شما با استفاده از این کامپوننت در جواب دوستان گذاشته بودی

اینطور استنباط کردم که شما به این کامپوننت اشراف نسبی داری و میتونی در مورد سوالات ابتدایی دیگران راهنمایی کنی

همونطور که خودتون هم demo دیدی چیز دندون گیری داخلش نبود
و اما help شاید باید به سبک دیگه ای داخلش جستجو کرد

بهرحال اگه جواب اون سوال میدونین ، خوشحال میشم بشنوم

تشکر

Esmail Solhkhah
یک شنبه 13 اسفند 1391, 23:11 عصر
اینطور استنباط کردم که شما به این کامپوننت اشراف نسبی داری و میتونی در مورد سوالات ابتدایی دیگران راهنمایی کنی

و اما help شاید باید به سبک دیگه ای داخلش جستجو کرد

اگه بنده گفتم

شما هم اگه ناراحت نشید پیشنهاد میکنم یکم با حوصله تر بررسی کنید.
بخاطر این بود که خودتون هلپ رو بررسی کنید تو این بررسی طبیعتا n تا مورد جدید هم یاد خواهید گرفت.هدف کمک بود ولی مثل اینکه شما ناراحت شدید.


بهرحال اگه جواب اون سوال میدونین ، خوشحال میشم بشنوم
نه متاسفانه به قول خودتون بنده اشراف نسبی دارم ، پس قطعا جواب سوال شما رو نمیدونم.شرمنده که وققتون رو با اطلاعات نسبی و مقدماتیم گرفتم.

موفق باشید.