PDA

View Full Version : مشکل در کار کردن با Excel



AmirAlimadadi
شنبه 24 مرداد 1388, 15:02 عصر
سلام
چه طور می شه یه فایل excel ایجاد کرد، من با استفاده از File.Create(filepath(،می خواستم این کار رو بکنم که نشد، بعد از کمی سرچ دیدم که بعضی ها گفتن از
using Microsoft.Office.Interop; استفاده کن و اونجا Excel.Application داره، اما من نتونستم این کار رو بکنم.
در ضمن بعد از ایجاد فایل، آیا با استفاده از دستورات Sql می شه داده در این فایل نوشت یا نه.
ممنون

hozouri
شنبه 24 مرداد 1388, 15:07 عصر
دوست عزیز یه جستجو میکردی :::

AmirAlimadadi
شنبه 24 مرداد 1388, 16:12 عصر
من سرچ کردم ولی چیز به درد بخوری پیدا نکردم، توی پست هم به این موضوع اشاره کردم

Soroush.Sarabi
شنبه 24 مرداد 1388, 16:29 عصر
من یک کتاب توی وبلاگم دارم می تونه بهت کمک کنه.


وب سایت رسمی سروش سارابی
مشاور فناوری اطلاعات، برنامه نویس و تحلیلگر سیستم
www.soroush-sarabi.com (http://www.soroush-sarabi.com)

f_pakzad
یک شنبه 25 مرداد 1388, 20:10 عصر
سلام
چه طور می شه یه فایل excel ایجاد کرد، من با استفاده از File.Create(filepath(،می خواستم این کار رو بکنم که نشد، بعد از کمی سرچ دیدم که بعضی ها گفتن از
using Microsoft.Office.Interop; استفاده کن و اونجا Excel.Application داره، اما من نتونستم این کار رو بکنم.
در ضمن بعد از ایجاد فایل، آیا با استفاده از دستورات Sql می شه داده در این فایل نوشت یا نه.
ممنون


شما بفرمایید دقیقا به چه مشگلی بر خوردید؟ تو لینک زیر طریقه ارسال اطلاعات گیرید به اکسل هست http://barnamenevis.org/forum/showpost.php?p=508688 اگر هم نمی خواهید از گیرید باشه که اطلاعات دیتاست رو از طریق datarow تو یه حلقه foreach سطر به سطر می ریزید تو دیتابیس. اگر هم که اصلا نمی خواهید از بانک باشه که چه بهتر .اول یه application می سازید مثل همین چیزی که تو این کد بالایی هست.بعد از طریق cell مقدار میدید. به هر خطای دیگه ای برخوردید بگید.من این روزا دارم همش تو import & export کار میکنم.

AmirAlimadadi
سه شنبه 27 مرداد 1388, 10:58 صبح
ممنون از شما دوست عزیز
اما دو تا سوال داشتم:
1- در حالتی که از dataset استفاده می کنیم، datarow ها رو باید سلول به سلول انتقال بدیم، یا اینکه راهی برای انتقال سطری هم وجود داره.
2- چه طوری می شه برخی از ویژگیهای فایل excel رو عوض کنیم، مثلا ستونها رو راست به چپ کنیم.
ممنون

Afshin160
سه شنبه 27 مرداد 1388, 11:08 صبح
دوست عزيز .. يه سري به لينك هاي زير بزن :

http://barnamenevis.org/forum/showthread.php?t=166747
http://barnamenevis.org/forum/showthread.php?t=166024
http://barnamenevis.org/forum/showthread.php?t=167430
http://barnamenevis.org/forum/showthread.php?t=170356

موفق باشيد .

f_pakzad
چهارشنبه 28 مرداد 1388, 10:08 صبح
ممنون از شما دوست عزیز
اما دو تا سوال داشتم:
1- در حالتی که از dataset استفاده می کنیم، datarow ها رو باید سلول به سلول انتقال بدیم، یا اینکه راهی برای انتقال سطری هم وجود داره.
2- چه طوری می شه برخی از ویژگیهای فایل excel رو عوض کنیم، مثلا ستونها رو راست به چپ کنیم.
ممنون


1- میفکرم اگه تونستم امشب کدشو برات میذارم
2-


-
Microsoft.Office.Interop.Excel.Application excelApp = new
Microsoft.Office.Interop.Excel.Application();

Microsoft.Office.Interop.Excel.Workbook excelBook =
excelApp.Workbooks.Add(XlSheetType.xlWorksheet);

Microsoft.Office.Interop.Excel.Worksheet excelWorksheet =
(Worksheet)(excelBook.Worksheets[1]);

excelApp.Visible = true;
excelWorksheet.DisplayRightToLeft = true;
3- من به دنبال کد تغییر فرمت ستون های اکسل هستم.با چند متد کار کردم اما درست نشد.اگر دوستان راهی دارند لطفا بفرمایند

AmirAlimadadi
چهارشنبه 28 مرداد 1388, 13:27 عصر
ممنون از شما دوست عزیز
من هم این روزا با excel خیلی کار می کنم، چه طور می شه تقریبا تمام ویژگی های یک سلول رو خودم تغییر بدم، مثلا رنگ زمینه، تغییر اندازه و رنگ فونت، تغییر نوع سلول و ... رو تغییر بدم، اما به نظر می رسه کار کردن با این ویژگی ها خیلی سخت است. راهی برای این تغییرات نمی شناسین.
دو تا سوال دیگه هم داشتم :
1 - من یه فایل اکسل درست کردم که طول سلولهای هر ستون با هم فرق می کنه، یعنی سطر اول هر ستون که در واقع سرستون محسوب می شه، طول بزرگتری از سایر سطور داره، اما پهنای ستون را بر اساس طول سطرها تنظیم می کنه، یعنی سطر اول رو تماما نشون نمی ده، چی کار باید بکنم.
2 - چه طوری باید بدون سوال کردن از کاربر فایل رو ذخیره کنم.

f_pakzad
پنج شنبه 29 مرداد 1388, 18:33 عصر
اگر بخواهیم به صورت سلولی درج کنیم:

ApplicationClass excel = new ApplicationClass();
excel.Application.Workbooks.Add(true);

int ColumnIndex = 0;


excel.Cells[1,1] ="نام";
excel.Cells[1, 2] = " نام خانوادگی";
excel.Cells[1, 3] = " موبایل";


int rowIndex = 0;
string val;

foreach (DataRow dr in objdataset.Tables[0].Rows)

{
rowIndex++;
ColumnIndex = 0;
foreach (DataColumn dc in objdataset.Tables[0].Columns)

{
ColumnIndex++;
if (dr[ColumnIndex - 1]==null)

val = "";
else
val = dr[ColumnIndex - 1].ToString();

excel.Cells[rowIndex + 1, ColumnIndex] = val;


}
}
excel.Visible = true;


اگر به صورت سطری


Microsoft.Office.Interop.Excel.Application excelApp = new
Microsoft.Office.Interop.Excel.Application();

Microsoft.Office.Interop.Excel.Workbook excelBook =
excelApp.Workbooks.Add(XlSheetType.xlWorksheet);

Microsoft.Office.Interop.Excel.Worksheet excelWorksheet =
(Worksheet)(excelBook.Worksheets[1]);

excelApp.Visible = true;
excelWorksheet.DisplayRightToLeft = true;

Range rng1 = excelWorksheet.get_Range("A1", "A1");
rng1.Value2 = "کد";
rng1.Font.Bold = true;




Range rng2 = excelWorksheet.get_Range("B1", "B1");
rng2.Value2 = "نام";
rng2.Font.Bold = true;
Range rng3 = excelWorksheet.get_Range("C1", "C1");
rng3.Value2 = "نام خانوادگي";
rng3.Font.Bold = true;

Range rng4 = excelWorksheet.get_Range("D1", "D1");
rng4.Value2 = "موبایل";
rng4.Font.Bold = true;


int i = 1;
foreach (DataRow r in objdataset .Tables[0].Rows)
{
i++;
string s = i.ToString();
Range r1 = excelWorksheet.get_Range("A" + s, "A" + s);
r1.Value2 = r[0].ToString();
Range r2 = excelWorksheet.get_Range("B" + s, "B" + s);
r2.Value2 = r[1].ToString();
Range r3 = excelWorksheet.get_Range("C" + s, "C" + s);
r3.Value2 = r[2].ToString();
Range r4 = excelWorksheet.get_Range("D" + s, "D" + s);
r4.Value2 = r[3].ToString();
}
البته من نمی دونم دقیقه هدفت از وارد کردن سطری اطلاعات چیه؟اگر می خوای for تو در تو نداشته باشه این کد بالای خواسته تو بر آورده میکنه.

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

در مورد ذخیره این کدو ببین:

excelApp.Save("d:\\test.xls");

فایل رو تو مسیر نوشته شده ذخیره میکنه اما موقع اجرای برامه مسیر ذخیره sheet رو هم میخواد! که من نمی دونم باید برای حل چه کرد.

f_pakzad
پنج شنبه 29 مرداد 1388, 18:35 عصر
در مورد تغییر فرمت سلول اگر به پست های قبلی نگاه کرده باشی برای خودم هم سواله.مثلا ما یه فیلد موبایل داریم که تو اکسل میاد صفر اول شماره ها رو بر میداره چون اون رو عددی در نظر میگیره اما ما باید text باشه.اگه به راه حلی برای این مشکل رسیدی بگذارش اینجا

AmirAlimadadi
شنبه 14 شهریور 1388, 11:14 صبح
در مورد ذخیره این کدو ببین:

کد:
excelApp.Save("d:\\test.xls");
فایل رو تو مسیر نوشته شده ذخیره میکنه اما موقع اجرای برامه مسیر ذخیره sheet رو هم میخواد! که من نمی دونم باید برای حل چه کرد.

برای حل این مشکل باید به شکل زیر عمل کرد:

excelApp.WorkBooks[1].SaveCopyAs("C:\\test.xls");

f_pakzad
یک شنبه 15 شهریور 1388, 11:00 صبح
http://barnamenevis.org/forum/showthread.php?t=175544

AmirAlimadadi
یک شنبه 12 مهر 1388, 09:24 صبح
این روش کار کرد و خیلی خوب هم جواب داد، اما اگه روی کامپیوتر فقط Excel 2007 نصب باشه
ExcelProject.Application.Workbooks.Add(Excel.XlShe etType.xlWorksheet)موقع باز کردن فایل یه ایرادی می گیره، مفهومش هم اینه که از یه ورژن قدیمی تر دارید استفاده می کنید

sa_ghaznavi
چهارشنبه 21 مهر 1389, 12:55 عصر
هنگام اجرای برنامه این خطا رو میده . به نظر شما مشکل چیه ؟
Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))
این خطا رو روی کد زیر میده :
excel.Application.Workbooks.Add(true);

ایمان مدائنی
چهارشنبه 21 مهر 1389, 13:35 عصر
من یک کتاب توی وبلاگم دارم می تونه بهت کمک کنه.


وب سایت رسمی سروش سارابی
مشاور فناوری اطلاعات، برنامه نویس و تحلیلگر سیستم
www.soroush-sarabi.com (http://www.soroush-sarabi.com)


دوست عزيز چند ساله به وب سايت خودتون سر نزديد

تمام لينكها خرابه