PDA

View Full Version : خروجی اکسل از datagridview



moghtada
جمعه 12 تیر 1394, 21:49 عصر
سلام بر دوستان
چطور میشه از دیتا گرید ویو خروجی اکسل گرفت؟
ممنون میشم اگه کمکم کنید چند بار تو اینترنت گشتم ولی هر کدوم از کدها یه جاری ارور میده چند بار هم امتحان کردم

ghasem110deh
جمعه 12 تیر 1394, 22:38 عصر
سلام بر دوستان
چطور میشه از دیتا گرید ویو خروجی اکسل گرفت؟
ممنون میشم اگه کمکم کنید چند بار تو اینترنت گشتم ولی هر کدوم از کدها یه جاری ارور میده چند بار هم امتحان کردم

سلام
تو این سورس که واسه دانلود هست هم خواندن اطلاعات از اکسل و درج در دیتابیس (ریختن در گریدویو) هست و هم بلعکس (خروجی اکسل از گریدویو)

http://barnamenevis.org/showthread.php?487938-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D8%A7%D9%86%D8%A8%D8%A7%D8%B1%D8%AF%D8%A7%D8%B1%D B%8C-%D8%A8%D8%A7-%D9%85%D8%AE%D8%AA%D8%B5%D8%B1%DB%8C-%D8%AA%D9%88%D8%B6%DB%8C%D8%AD%D8%A7%D8%AA&highlight=%D8%AF%DB%8C%D8%AA%D8%A7%DA%AF%D8%B1%DB% 8C%D8%AF%D9%88%DB%8C%D9%88+%D8%A7%DA%A9%D8%B3%D9%8 4

دلتنگ اسمان
شنبه 13 تیر 1394, 09:45 صبح
با سلام
هر دو روش رو هم استفاده کردم هر کدوم مزایا و معایب خودش رو داره:
برای استفاده از متد دومی باید یه فایل اکسل در مسیری را ایجاد کنید و نام و مسیر اون فایل رو به برنامه بدید.

private void DGV2Excel2007()
{
Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application();
System.Globalization.CultureInfo oldCI = System.Threading.Thread.CurrentThread.CurrentCultu re;
System.Threading.Thread.CurrentThread.CurrentCultu re = new System.Globalization.CultureInfo("en-US");
Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing);
Microsoft.Office.Interop.Excel._Worksheet worksheet = null;
app.Visible = true;
try
{

worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook .Sheets["Sheet1"];
worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook .ActiveSheet;
worksheet.Name = "Exported from Ketoan";
for (int i = 1; i < dataGridView1.Columns.Count + 1; i++)
{
worksheet.Cells[1, i] = dataGridView1.Columns[i - 1].HeaderText;
}

for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
worksheet.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString();
}
}
//SaveFileDialog saveFileDialog1 = new SaveFileDialog();

//string fileName = String.Empty;
//saveFileDialog1.Filter = "Excel files |*.xlsx|All files (*.*)|*.*";
//saveFileDialog1.FilterIndex = 2;
//saveFileDialog1.RestoreDirectory = true;


//if (saveFileDialog1.ShowDialog() == DialogResult.OK)
//{
// fileName = saveFileDialog1.FileName;

// workbook.SaveAs(fileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode. xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

//}
//else
// return;


}
catch (System.Exception ex)
{

}
finally
{
// app.Quit();
workbook = null;
app = null;
}
}
private void ToCsV(DataGridView dGV, string filename)
{
string stOutput = "";
// Export titles:
string sHeaders = "";

for (int j = 0; j < dGV.Columns.Count; j++)
sHeaders = sHeaders.ToString() + Convert.ToString(dGV.Columns[j].HeaderText) + "\t";
stOutput += sHeaders + "\r\n";
// Export data.
for (int i = 0; i < dGV.RowCount - 1; i++)
{
string stLine = "";
for (int j = 0; j < dGV.Rows[i].Cells.Count; j++)
stLine = stLine.ToString() + Convert.ToString(dGV.Rows[i].Cells[j].Value) + "\t";
stOutput += stLine + "\r\n";
}
Encoding utf16 = Encoding.GetEncoding(1256);
byte[] output = utf16.GetBytes(stOutput);
FileStream fs = new FileStream(filename, FileMode.Create);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(output, 0, output.Length); //write the encoded file
bw.Flush();
bw.Close();
fs.Close();
}

golbafan
شنبه 13 تیر 1394, 12:00 عصر
اگر جدول شما فقط شامل کاراکتر است (مثلا تصویر و این چیزا تو جدول نباشه) میتونین از فرمت csv استفاده کنید که در اکسل هم باز میشه
به این صورت که برای ستون ها از سمیکالون و برای ردیف ها از اینتر استفاده کنید و متن ایجاد شده رو ذخیره کنید با پسوند csv:

name ; famili ; id
1 ; ali ; hasani
2 ; milad ; karimi

hamid_hr
شنبه 13 تیر 1394, 12:40 عصر
http://barnamenevis.org/showthread.php?428883-%D9%83%D9%84%D8%A7%D8%B3%D9%8A-%D8%A8%D8%B1%D8%A7%D9%8A-%D8%A7%D9%83%D8%B3%D9%BE%D9%88%D8%B1%D8%AA-datatable-%D8%A8%D9%87-%D9%81%D8%A7%D9%8A%D9%84-exel&highlight=%D8%A7%DA%A9%D8%B3%D9%84

moghtada
یک شنبه 14 تیر 1394, 08:46 صبح
ممنون از پاسختون
دیتا گرید من قثط شامل کاراکتر هست میشه بیشتر توضیح بدین
مرسی

golbafan
یک شنبه 14 تیر 1394, 09:19 صبح
ممنون از پاسختون
دیتا گرید من قثط شامل کاراکتر هست میشه بیشتر توضیح بدین
مرسی

سلام
همونطور که ذکر شد شما میتونید بدون استفاده از هیچ کامپوننت و ابزاری (برای کاهش حجم برنامتون) براحتی با نوشتن فایل text و دخیره اون با پسوند csv نتیجه رو ایجاد کنید
مثلا ما جدولی داریم شامل فیلدهای زیر:

id: integer
name: string
famil: string

حالا کافیه از 2 تا حلقه استفاده کنید که یکی برای ردیف ها و یکی برای ستون ها است
فرض کنید جدول شما همین 3 تا ستون رو داره و البته مثلا 7 تا ردیف هم داره:

for i=1 to 7 // rows
begin
tabel.RecordNo=i
for j=1 to 3 //cols
begin
text=text+tabel.field(j).asString+';'
end

text=text+#13#10 //next line

end

jamal_ch
یک شنبه 14 تیر 1394, 12:32 عصر
http://www.codeproject.com/Tips/545456/Exporting-DataGridview-To-Excel

davidrobert
یک شنبه 14 تیر 1394, 13:25 عصر
سلام بر دوستان
چطور میشه از دیتا گرید ویو خروجی اکسل گرفت؟
ممنون میشم اگه کمکم کنید چند بار تو اینترنت گشتم ولی هر کدوم از کدها یه جاری ارور میده چند بار هم امتحان کردم

اگه از استیمول ریپورت برای گزارش گیری استفاده میکنید امکان خروجی اسکل گرفتن نیست چون خود استیمول سافت خروجی اکسل رو هم داره و بهتر هستش که از خود استیمول سافت استفاده کنید اگه این استیمول سافت برای گزارش گیری استفاده نمیکنید سورس زیاد هستش برای خروجی گرفتن اکسل و ورد از دیتاگرید ویو.