PDA

View Full Version : انتقال رکوردهای دیتاگرید به اکسل



maikola
جمعه 17 تیر 1390, 15:43 عصر
سلام
من یه جدول از داده در دیتاگرید ویو دارم که میخوام به اکسل انتقال بدم چندتا مثال تو سایت پیدا کردم ولی همشون موقع اجرا یه خطایی میدن و برنام تا آخر اجرا نمیشه اگه راهنماییم کنید ممنون میشم
به علاوه برای ارتباط با اکسل چه dll هایی و از چه مسیری لازم هست تا به برنامه اضافه بشه

Esmail Solhkhah
شنبه 18 تیر 1390, 01:07 صبح
یه برنامه نوشتم واستون برا این کار

در ضمن در مسیر نصب برنامه DLL های لازمه وجود دارند.

موفق باشید.

maikola
یک شنبه 26 تیر 1390, 23:58 عصر
سلام
این برنامه ای که جناب Solhkhah گذاشتند به یه اشکالی برخورد کردم
وقتی خود برنامه آقای Solhkhah رو اجرا میکنم کاملا درست انجام میشه ولی وقتی New Project میسازم و سه تا فایل SqlManager.QExport.dll و SqlManager.QExport.Localization.dll و SqlManager.Xls.dll رو با Add Refrence به پروژه ام اضافه میکنم qExportXLS1 رو هم به فرم اضافه کردم ولی باز error میده
72567

maikola
دوشنبه 27 تیر 1390, 19:36 عصر
از دوستان کسی نمی دونه اشکال کارم کجاست؟

Esmail Solhkhah
دوشنبه 27 تیر 1390, 20:12 عصر
سلام
این برنامه ای که جناب Solhkhah گذاشتند به یه اشکالی برخورد کردم
وقتی خود برنامه آقای Solhkhah رو اجرا میکنم کاملا درست انجام میشه ولی وقتی New Project میسازم و سه تا فایل SqlManager.QExport.dll و SqlManager.QExport.Localization.dll و SqlManager.Xls.dll رو با Add Refrence به پروژه ام اضافه میکنم qExportXLS1 رو هم به فرم اضافه کردم ولی باز error میده
72567

اگه میخاین نسخه نصبیشو براتون بفرستم؟

Boy_nn
دوشنبه 27 تیر 1390, 20:53 عصر
private void button1_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
excel.Application.Workbooks.Add(true);
int ColumnIndex = 0;
foreach (DataGridViewColumn col in dataGridView1.Columns)
{
ColumnIndex++;
excel.Cells[1, ColumnIndex] = col.HeaderText;
}
int rowIndex = 0;
string val;
//pb.Maximum = dataGridView1.Rows.Count;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
rowIndex++;
ColumnIndex = 0;
foreach (DataGridViewColumn col in dataGridView1.Columns)
{
ColumnIndex++;
if (row.Cells[ColumnIndex - 1].Value == null)
val = "";
else
val = row.Cells[ColumnIndex - 1].Value.ToString();
excel.Cells[rowIndex + 1, ColumnIndex] = val;
}
}
excel.Visible = true;
}

maikola
دوشنبه 27 تیر 1390, 21:26 عصر
سلام ممنون از جوابتون برای اینکه خطای زیر رو نگیره چه فایلیرو باید به پروِژه اضافه کنم
72612
در قسمت add refrence از قسمت com
microsoft excel 11.0 object library رو اضافه کردم ولی یه علامت تعجب زرد رنگ کنار کتابخونه نمایش داده شد
72613
و using microsoft.office فعال نشد

Esmail Solhkhah
دوشنبه 27 تیر 1390, 21:29 عصر
نسخه نصبیشو آپ کردم

بصورت پیام خصوصی براتون میفرستم

موفق باشید.

aliburnout
دوشنبه 27 تیر 1390, 22:24 عصر
با سلام
روش های دوستان شاید خیلی خوب باشه ولی پیچیدس
من یه روش دارام که اگه فقط بخوای از grid به Excell ببری جواب میده
تو این کد که می زارم من یک grid دارام با 4 ستون و سطرهای نامعلوم
این کد رو داخل یه Button بنویس


System.IO.StreamWriter A;
string S = "<table border=1>";
S = S + "<tr bgcolor=yellow>";
S = S + "<td>تاریج</td><td>شرح</td><td>مبلغ</td><td>موجودی</td>";//Excell تیتر هر ستون در
S = S + "</tr>";
for (int i = 1; i < 19; i++)
{
S = S + "<tr>";
S = S + "<td>" + dataGridView1.Rows[i].Cells[0].Value.ToString() + "</td>";
S = S + "<td>" + dataGridView1.Rows[i].Cells[1].Value.ToString() + "</td>";
S = S + "<td>" + dataGridView1.Rows[i].Cells[2].Value.ToString() + "</td>";
S = S + "<td>" + dataGridView1.Rows[i].Cells[3].Value.ToString() + "</td>";
S = S + "</tr>";

}
S = S + "</table>";
A = System.IO.File.CreateText("c:\\file.xls");// محل ذخیره شدن فایل
A.WriteLine(S);
A.Close();
MessageBox.Show("ok");


اگه نفهمیدی بگو بیشتر توضیح بدم :چشمک:

maikola
دوشنبه 27 تیر 1390, 23:15 عصر
سلام دوست عزیز ممنون از راهنماییتون
در اکسل ذخیره شد ولی هدر گرید رو درست نشون نمیده
72614

Boy_nn
سه شنبه 28 تیر 1390, 07:20 صبح
دوست عزیز
Microsoft.Office.Interop.Excel

به references برنامه ات اضافه کن مشکلت حل میشه

aliburnout
سه شنبه 28 تیر 1390, 13:16 عصر
سلام دوست عزیز ممنون از راهنماییتون
در اکسل ذخیره شد ولی هدر گرید رو درست نشون نمیده
72614

واسه هدر گرید از این کد استفاده کن


S = S + "<td>ستون 1</td><td>ستون 2</td><td>ستون 3</td><td>ستون 4 </td>";


http://up.iranblog.com/images/fxqubdo864272uo4jk0o.jpg

maikola
سه شنبه 28 تیر 1390, 20:26 عصر
حل شد ممنون

shocraneh
پنج شنبه 13 مرداد 1390, 15:27 عصر
با سلام منم این مشکل رو دارم که متن هدر تو اکسل درست نمی خوره .کدی که دوستمان تو تاپیک 12 نوشتند با تاپیک 9 که فرقی نمی کنه!! پس دوستمونmaikolaچه طوری مشکلشونو حل کردند؟ لطفا راهنمایی کنید

aliburnout
پنج شنبه 13 مرداد 1390, 17:50 عصر
با سلام منم این مشکل رو دارم که متن هدر تو اکسل درست نمی خوره .کدی که دوستمان تو تاپیک 12 نوشتند با تاپیک 9 که فرقی نمی کنه!! پس دوستمونmaikolaچه طوری مشکلشونو حل کردند؟ لطفا راهنمایی کنید

سلام عزیز
والا نباس مشکلی داشته باشه
شما از کدی که برای هدر ها من نوشتم استفاده کن درست میشه فقط یادت باشه که هدر ها رو داخل کد خودت بنویسی و از هدر های دیتاگرید الگو نگیری
.
درباره کد این روش اینو اضافه کنم که اگه پسوند فایل آخر رو doc کنی فایل word میده و اگه htm کنی فایل html میده :چشمک:

raziyehbazargan
یک شنبه 08 مرداد 1391, 08:54 صبح
ممنون از راهنماییتون...اما اگه بخوام محل ذخیره سازی بصورت پیش فرض مثلا درایو خاصی نباشه و کاربر خودش محل ذخیره سازی فایل رو مشخص کنه؟؟؟

maikola
دوشنبه 09 مرداد 1391, 08:12 صبح
ممنون از راهنماییتون...اما اگه بخوام محل ذخیره سازی بصورت پیش فرض مثلا درایو خاصی نباشه و کاربر خودش محل ذخیره سازی فایل رو مشخص کنه؟؟؟


string PathStr;

folderBrowserDialog1.Description = "انتخاب مسير";
folderBrowserDialog1.RootFolder = Environment.SpecialFolder.MyComputer;
folderBrowserDialog1.ShowNewFolderButton = true;
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
PathStr = folderBrowserDialog1.SelectedPath;
System.IO.StreamWriter A;
string namefile;
string S = "<table border=1>";
S = S + "<tr bgcolor=yellow>";
S = S + "<td>" + "رديف" + "</td>"; S = S + "<td>" + "زمان نسبي" + "</td>";
for (int i = 0; i < 16; i++)
{
S = S + "<td>" + "my header" + "</td>";
}
S = S + "</tr>";

for (int rowi = 0; rowi < dataGridView1.Rows.Count; rowi++)
{
S = S + "<tr>";
for (int coli = 0; coli < 18; coli++)
{
S = S + "<td>" + dataGridView1.Rows[rowi].Cells[coli].Value.ToString() + "</td>";
}
S = S + "</tr>";

}
S = S + "</table>";

namefile = "myname";
PathStr = PathStr + "/" + namefile + ".xls";
A = System.IO.File.CreateText(PathStr);

A.WriteLine(S);
A.Close();
System.Diagnostics.Process.Start(PathStr);

}