سلام بر دوستان
چطور میشه از دیتا گرید ویو خروجی اکسل گرفت؟
ممنون میشم اگه کمکم کنید چند بار تو اینترنت گشتم ولی هر کدوم از کدها یه جاری ارور میده چند بار هم امتحان کردم
Printable View
سلام بر دوستان
چطور میشه از دیتا گرید ویو خروجی اکسل گرفت؟
ممنون میشم اگه کمکم کنید چند بار تو اینترنت گشتم ولی هر کدوم از کدها یه جاری ارور میده چند بار هم امتحان کردم
سلام
تو این سورس که واسه دانلود هست هم خواندن اطلاعات از اکسل و درج در دیتابیس (ریختن در گریدویو) هست و هم بلعکس (خروجی اکسل از گریدویو)
https://barnamenevis.org/showthread.p...A9%D8%B3%D9%84
با سلام
هر دو روش رو هم استفاده کردم هر کدوم مزایا و معایب خودش رو داره:
برای استفاده از متد دومی باید یه فایل اکسل در مسیری را ایجاد کنید و نام و مسیر اون فایل رو به برنامه بدید.
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();
}
اگر جدول شما فقط شامل کاراکتر است (مثلا تصویر و این چیزا تو جدول نباشه) میتونین از فرمت csv استفاده کنید که در اکسل هم باز میشه
به این صورت که برای ستون ها از سمیکالون و برای ردیف ها از اینتر استفاده کنید و متن ایجاد شده رو ذخیره کنید با پسوند csv:
name ; famili ; id
1 ; ali ; hasani
2 ; milad ; karimi
ممنون از پاسختون
دیتا گرید من قثط شامل کاراکتر هست میشه بیشتر توضیح بدین
مرسی
سلام
همونطور که ذکر شد شما میتونید بدون استفاده از هیچ کامپوننت و ابزاری (برای کاهش حجم برنامتون) براحتی با نوشتن فایل 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
اگه از استیمول ریپورت برای گزارش گیری استفاده میکنید امکان خروجی اسکل گرفتن نیست چون خود استیمول سافت خروجی اکسل رو هم داره و بهتر هستش که از خود استیمول سافت استفاده کنید اگه این استیمول سافت برای گزارش گیری استفاده نمیکنید سورس زیاد هستش برای خروجی گرفتن اکسل و ورد از دیتاگرید ویو.