View Full Version : سوال: ایراد در نوشتن کد برای اکسل
aminpprog
دوشنبه 21 اسفند 1391, 11:40 صبح
سلام به دوستان عزیز :
من در حال نوشتن کد برای مدیریت فایل های اکسل هستم ولی بعضی وقت ها خطایی که در شکل زیر قرار دادم رو از من میگیره .
علتش از چی میتونه باشه ؟ :ناراحت::ناراحت::ناراحت:
101241
aminpprog
دوشنبه 21 اسفند 1391, 12:25 عصر
:گریه::گریه::گریه::گریه::گریه: :گریه::گریه::گریه::گریه::گریه: :گریه::گریه::گریه::گریه::گریه: :گریه::گریه::گریه::گریه::گریه: :گریه::گریه::گریه::گریه::گریه:
کسی بلد نیست ؟
:گریه::گریه::گریه::گریه::گریه: :گریه::گریه::گریه::گریه::گریه: :گریه::گریه::گریه::گریه::گریه: :گریه::گریه::گریه::گریه::گریه: :گریه::گریه::گریه::گریه::گریه:
csharpdoost
دوشنبه 21 اسفند 1391, 12:40 عصر
پیغامت که میگه یا فرمت قدیمیه و یا دیتای ورودی صحیح نیست. توی این خط چیکار میخوای بکنی؟ من که با کدهای دیگه به اکسل متصل میشم و کارهام رو باهاش انجام میدم.
object mis = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Excel.Application ExcelAppbarnameh = new Microsoft.Office.Interop.Excel.Application();
ExcelAppbarnameh.Visible = false;
System.Threading.Thread.CurrentThread.CurrentCultu re = new System.Globalization.CultureInfo("en-US");
Microsoft.Office.Interop.Excel.Application ExcelApp_110 = new Microsoft.Office.Interop.Excel.Application();
ExcelApp_110.Visible = false;
System.Threading.Thread.CurrentThread.CurrentCultu re = new System.Globalization.CultureInfo("en-US");
//باز کردن برنامه اصلی
Workbook workbook_barnameh = ExcelAppbarnameh.Workbooks.Open(FileName_barnameh, mis, mis, mis, mis, mis,
mis, mis, mis, mis, mis, mis, mis, mis, mis);
Sheets sheetsbarnameh = workbook_barnameh.Worksheets;
//باز کردن برنامه کدها
Workbook workbook110 = ExcelApp_110.Workbooks.Open(FileName110, mis, mis, mis, mis,
mis, mis, mis, mis, mis, mis, mis, mis, mis, mis);
Sheets sheets110 = workbook110.Worksheets;
aminpprog
دوشنبه 21 اسفند 1391, 13:42 عصر
آخه این ایرادی که از من گرفته تنها موردی که در بالا معرفی کردم نیست .
همین کدی که شما به من دادید رو هم در خط Workbooks.Open خطای Exception میگیره .
کلا با (mis) ها و (Open) ها مشکل داره !!!
aminpprog
دوشنبه 21 اسفند 1391, 14:42 عصر
اون طور که خود سی شارپ میگه ظاهرا رفرنس Microsoft.Office.Interop.Excel قدیمیه .
ولی من هر 2 مورد Microsoft.Office.Interop.Excel 11 و Microsoft.Office.Interop.Excel 12
و حتی از سربرگ COM گزینه Microsoft.Excel.Object.Library رو که علاوه بر رفرنس Interop شامل Office.Core هم هست رو امتحان کردم
ولی بازهم همون پیغام رو میده ! :متفکر: :عصبانی++::متفکر::عصبانی++:
البته این رو هم بگم که آفیسی رو که من نصب کردم 2007 هستش و جدیده .
csharpdoost
دوشنبه 21 اسفند 1391, 15:35 عصر
مهم نیست . آفیس من هم 2007 هستش. ببین عزیزمن روال کار اینطوریه : 1- بعد از باز شدن پروژه ات توی رفرنسها Microsoft.Office.Interop.Excel 12 رو اضافه کن. 2- توی usingها هم اضافه کن.
بعدش هم کدهای زیر :
به ترتیب :
public partial class Form1 : Form
{
Range range_radif1;
Worksheet worksheetbarname, worksheet110;
بعدش وجود فایل اکسل رو چک کنه:
if (System.IO.File.Exists(textBox1.Text))
FileName_barnameh = textBox1.Text;
دست آخر هم کدهایی که تو پست بالا نوشتم.
توصیه میکنم اول یه پروژه جدید ایجاد کن و همین روال رو توی اون تست کن.
aminpprog
دوشنبه 21 اسفند 1391, 17:40 عصر
دوست عزیز منظورت از textbox ی که نوشتی چیه ؟
اگه منظورت دریافت مسیر فایل (فایل اکسل) از کاربر هست که من هم دقیقا همون کار رو کردم ، اما اگه منظورت چیز دیگه ایه لطفا بگو تا اونو تصحیح کنم .
باز هم همون آش و همون کاسه !!!
(از متد Open و پارامتر های اون -mis ها- ایراد میگیره)
HAMID484
دوشنبه 21 اسفند 1391, 20:47 عصر
دوست عزیز من ی کد از نت پیدا کردم که باهاش یک دیتاگرید ویو رو انتقال میدم به اکسل . واسه من درست کار میکنه شاید بعضی قسمت هاش بدردت بخوره
public static void sendToExcel(DataGridView dataGridView1)
{
System.Threading.Thread.CurrentThread.CurrentCultu re =
new System.Globalization.CultureInfo("en-US");
// creating Excel Application
Microsoft.Office.Interop.Excel._Application app =
new Microsoft.Office.Interop.Excel.Application();
// creating new WorkBook within Excel application
Microsoft.Office.Interop.Excel._Workbook workbook =
app.Workbooks.Add(Type.Missing);
// creating new Excelsheet in workbook
Microsoft.Office.Interop.Excel._Worksheet worksheet = null;
// see the excel sheet behind the program
app.Visible = true;
// get the reference of first sheet. By default its name is Sheet1.
// store its reference to worksheet
worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook .Sheets["Sheet1"];
worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook .ActiveSheet;
// changing the name of active sheet
worksheet.Name = "Exported from gridview";
// storing header part in Excel
for (int i = 1; i <= dataGridView1.Columns.Count ; i++)
worksheet.Cells[1, i] = dataGridView1.Columns[i - 1].HeaderText;
// storing Each row and column value to excel sheet
for (int i = 0; i < dataGridView1.Rows.Count; i++)
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
worksheet.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString();
}
}
aminpprog
دوشنبه 21 اسفند 1391, 21:25 عصر
داداش دست نازنینت درد نکنه . باور کن 3 یا 4 روزی بود که منو درگیر کرده بود ؛ خدا خیرتو بده .
چون می دونم چجوری تشکر کنم (یه دونه تشکر برات ثبت کردم) ، نمی نویسم "نمی دونم چجوری ازت تشکر کنم" وگرنه می نوشتم !!! :تشویق::تشویق::تشویق:
حالا که زحمت کشیدی اگه امکان داره ، لطفا اینم برام بگو که چطوری می تونم به یه فایل اکسل از قبل موجود ، دسترسی پیدا کنم (با انواع روش هایی که از متد Open استفاده می کنه استفاده کردم ولی پیغام خطای Exception میگیرم -تصویر موجود در پست اول-) .
keyvan_tachra
یک شنبه 30 تیر 1392, 13:10 عصر
خط اول با این شروع بشه حله
System.Globalization.CultureInfo oldCI = System.Threading.Thread.CurrentThread.CurrentCultu re;
System.Threading.Thread.CurrentThread.CurrentCultu re = new System.Globalization.CultureInfo("en-US");
mahdi_7610
یک شنبه 30 تیر 1392, 17:28 عصر
دوست عزیز من ی کد از نت پیدا کردم که باهاش یک دیتاگرید ویو رو انتقال میدم به اکسل . واسه من درست کار میکنه شاید بعضی قسمت هاش بدردت بخوره
public static void sendToExcel(DataGridView dataGridView1)
{
System.Threading.Thread.CurrentThread.CurrentCultu re =
new System.Globalization.CultureInfo("en-US");
// creating Excel Application
Microsoft.Office.Interop.Excel._Application app =
new Microsoft.Office.Interop.Excel.Application();
// creating new WorkBook within Excel application
Microsoft.Office.Interop.Excel._Workbook workbook =
app.Workbooks.Add(Type.Missing);
// creating new Excelsheet in workbook
Microsoft.Office.Interop.Excel._Worksheet worksheet = null;
// see the excel sheet behind the program
app.Visible = true;
// get the reference of first sheet. By default its name is Sheet1.
// store its reference to worksheet
worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook .Sheets["Sheet1"];
worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook .ActiveSheet;
// changing the name of active sheet
worksheet.Name = "Exported from gridview";
// storing header part in Excel
for (int i = 1; i <= dataGridView1.Columns.Count ; i++)
worksheet.Cells[1, i] = dataGridView1.Columns[i - 1].HeaderText;
// storing Each row and column value to excel sheet
for (int i = 0; i < dataGridView1.Rows.Count; i++)
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
worksheet.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString();
}
}
سلام
من هم از این کد استفاده می کنم.
اطلاعات را توی اکسل می ریزه .
اما مشکلی که داره توی خط اخر error میده.
http://upload7.ir/images/38660946790639235852.jpg (http://upload7.ir/)
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.