PDA

View Full Version : اکسپرت داده ها از DataGridViewer یا DataGrid



محمد زارع
شنبه 28 مهر 1386, 09:59 صبح
با سلام خدمت همه دوستان

من به یک مشکل برخوردم و اون هم اینکه: باید بعد ازاینکه داده ها رو توسط یک کوئری و دیتاست و .... از بانک خوندم نتیجه رو بصورت یک فایل اکسلی یا یه فایل تکست(از نوع کاما دلیمیتد) اکسپورت کنم، ولی....

از دوستان باتجربه خوبم درخواست کمک دارم، ممنون میشم اگه با یک مثال کمک کنند.:تشویق:

با تشکر از همگی.

محمد زارع
شنبه 28 مهر 1386, 14:30 عصر
دوستان لطفاً توجه/کمک نمائید.

babak23
شنبه 28 مهر 1386, 15:30 عصر
یه راه ساده به این صورت هست که اطلاعت خوانده شده از بانک را داخل بافر ذخیره کنی و این اطلاعات را تبدیل به فرمت دلخواهت کنی.
راستش را بخوای من به صورت مستقیم این کار را نکردم و از یک مورد datagrid استفاده کردم به این صورت که اطلاعت خوانده شده ابتدا در گرید ذخیره میشه و اطلاعات داخل این گرید را به بافر منتقل میکنم و بعد به یک فایل متنی تبدیل میشه. البته واسط گرید را میشه از دید کاربر مخفی کرد ( مطمئنن راه هایی بهتری هم وجود داره که اینجانب نمیدانم )
در هر صورت این کدش هست ( البته سی شارپ )



//save data in datagrid to file
privatevoid SaveinFile()
{
string strFileName="";
if (this.grdAuthorTitles.GetCellCount(DataGridViewEle mentStates.Selected) > 0)
{
try
{
this.grdAuthorTitles.MultiSelect = true;
this.grdAuthorTitles.SelectAll();

// Add the selection to the clipboard.
Clipboard.SetDataObject(this.grdAuthorTitles.GetCl ipboardContent());
// Replace the text box contents with the clipboard text.
this.SavetoFile.Text = Clipboard.GetText();
}
catch (System.Runtime.InteropServices.ExternalException)
{
this.SavetoFile.Text ="The Clipboard could not be accessed. Please try again.";
}
this.grdAuthorTitles.MultiSelect = false;
}
// Set the save dialog properties
saveFileDialog1.DefaultExt = "txt";
saveFileDialog1.FileName = strFileName;
saveFileDialog1.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.* |Word file (*.doc)|*.doc";
saveFileDialog1.FilterIndex = 1;
saveFileDialog1.OverwritePrompt = true;
saveFileDialog1.Title = "Demo Save File Dialog";
// Show the Save file dialog and if the user clicks
// Save button, save the file
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
// Save the file name
strFileName = saveFileDialog1.FileName;
// Write the contents of the text box in file
System.IO.File.WriteAllText(strFileName, SavetoFile.Text);
}
}
//serach record for add and delete and update

محمد زارع
شنبه 28 مهر 1386, 15:37 عصر
یه راه ساده به این صورت هست که اطلاعت حوانده شده از بانک را داخل بافر ذخیره کنی و این اطلاعات را تبدیل به فرمت دلخواهت کنی.
راستش را بخوای من به صورت مستقیم این کار را نکردم و از یک مورد datagrid استفاده کردم به این صورت که اطلاعت خوانده شده ابتدا در گرید ذخیره میشه و اطلاعات داخل این گرید را به بافر منتقل میکنم و بعد به یک فایل متنی تبدیل میشه. البته واسط گرید را میشه از دید کاربر مخفی کرد ( مطمئنن راه هایی بهتری هم وجود داره که اینجانب نمیدانم )
در هر صورت این کدش هست ( البته سی شارپ )



//save data in datagrid to file
privatevoid SaveinFile()
{
string strFileName="";
if (this.grdAuthorTitles.GetCellCount(DataGridViewEle mentStates.Selected) > 0)
{
try
{
this.grdAuthorTitles.MultiSelect = true;
this.grdAuthorTitles.SelectAll();

// Add the selection to the clipboard.
Clipboard.SetDataObject(this.grdAuthorTitles.GetCl ipboardContent());
// Replace the text box contents with the clipboard text.
this.SavetoFile.Text = Clipboard.GetText();
}
catch (System.Runtime.InteropServices.ExternalException)
{
this.SavetoFile.Text ="The Clipboard could not be accessed. Please try again.";
}
this.grdAuthorTitles.MultiSelect = false;
}
// Set the save dialog properties
saveFileDialog1.DefaultExt = "txt";
saveFileDialog1.FileName = strFileName;
saveFileDialog1.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.* |Word file (*.doc)|*.doc";
saveFileDialog1.FilterIndex = 1;
saveFileDialog1.OverwritePrompt = true;
saveFileDialog1.Title = "Demo Save File Dialog";
// Show the Save file dialog and if the user clicks
// Save button, save the file
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
// Save the file name
strFileName = saveFileDialog1.FileName;
// Write the contents of the text box in file
System.IO.File.WriteAllText(strFileName, SavetoFile.Text);
}
}
//serach record for add and delete and update


خیلی خوبه.
از زحمتی که کشیدید ممنونم.
ولی من اصلاً با کد های سی شارپ آشنا نیستم، اگه ممکنه توی وی بی دات نت راهنمایی کنید.

babak23
شنبه 28 مهر 1386, 15:53 عصر
به نظر تبدیل این کد ها به vb چندان مشکل نیست
در کل شما باید دو کار انجام بدیید
1 اطلاعات خوانده شده از بانک اطلاعاتی که در داخل گرید هستند را به بافر منتقل کنید.


Private Sub PasteButton_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles PasteButton.Click

If Me.DataGridView1.GetCellCount( _
DataGridViewElementStates.Selected) > 0 Then

Try

' Add the selection to the clipboard.
Clipboard.SetDataObject( _
Me.DataGridView1.GetClipboardContent())

' Replace the text box contents with the clipboard text.
Me.TextBox1.Text = Clipboard.GetText()

Catch ex As System.Runtime.InteropServices.ExternalException
Me.TextBox1.Text = _
"The Clipboard could not be accessed. Please try again."
End Try

End If

End Sub

2 حالا شما باید اطلاعات داخل کلیب بورد ( بافر ) را با توجه به دستور


this.SavetoFile.Text = Clipboard.GetText();

داخل یک فایل متنی کپی کنید
البته برای این کار باید saveFileDialog را به برنامه اضافه کنید

این راه کار هست که شما باید از این دو مورد برای ذخیره اطلاعت استفاده کنید.
البته کد های تایپیک اولی دقیقا همان کاری را انجام میده که شما میخواهین( فقط باید زحمت تبدیلش را بکشید )