70٪ تخفیف ویژه جشنواره تابستانه توسینسو
پایان تخفیف تا:
مشاهده دوره‌ها
0

خروجی فایل تکست از datagridview در C#

با سلام

من میخوام از یه datagridview خروجی تکست بگیرم کد زیر رو هم نوشتم:

try
            {
                const string path = @"f:\123\123.txt";
                using (FileStream fileStream = File.Open(path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite))
                using (TextWriter sw = new StreamWriter(fileStream))
                {
                    int rowcount = dgvSum.Rows.Count;
                    for (int i = 0; i < rowcount - 1; i++)
                    {
                        sw.WriteLine(dgvSum.Rows[i].Cells[0].Value.ToString());
                    }
                }
                MessageBox.Show(@"Text file was created.");
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.ToString());
                //Console.WriteLine(exception);
            }

ولی بهم ارور زیر رو میده:

با سلام
من میخوام از یه datagridview خروجی تکست بگیرم کد زیر رو هم نوشتم:
<c#>
try
            {
                const string path = @f:\123\123.txt;
                using (FileStream fileStream = File.Open(path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite))
                using (TextWriter sw = new StreamWriter(fileStream))
                {
                    int rowcount = dgvSum.Rows.Count;
                    for (int i = 0; i < rowcount - 1; i++)
                    {
                        sw.WriteLine(dgvSum.Rows[i].Cells[0].Value.ToString());
                    }
                }
                MessageBox.Show(@Text file was created.);
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.ToString());
                //Console.WriteLine(exception);
            }
<c#>

ولی بهم ارور زیر رو میده:
||http://tosinso.com/files/get/0d455572-b64a-4500-b7ed-8ca795acc6ba||

ممنون می شم کمکم کنید

ممنون می شم کمکم کنید

پرسیده شده در 1395/03/19 توسط

16 پاسخ

0

کد رو بصورت بالا تغییر دادم ولی میخوام بتونم سلول ها با تب از هم جدا شده باشن.

پاسخ در 1395/03/19 توسط
0

ممنون مشکل حل شد.

پاسخ در 1395/03/19 توسط
0

تو قسمت string.join به جای , از t\ استفاده کنید.

پاسخ در 1395/03/19 توسط
0

خوب، به خاطر اینه که شما تو کدتون فقط ستون اول رو گذاشتید، بقیه ستون ها رو هم باید اضافه کنید:

builder.AppendLine(dgvSum.Rows[i].Cells[0].Value.ToString() + "," + dgvSum.Rows[i].Cells[1].Value.ToString());
پاسخ در 1395/03/19 توسط
0

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

اون ارور درست شد ولی هیچ دیتایی رو وارد فایل تکست نمی کنه.....

سوال بعدی. اگر بخوام مسیر و نام فایل رو کاربر انتخاب کنه باید کد رو چطور تغییربدم؟

پاسخ در 1395/03/19 توسط
0

به خاطر اینکه شما حلقه تو در تو استفاده کردید. باید ابتدا هر سطر رو ایجاد کنید و بعد به رشتتون اضافه کنید:

SaveFileDialog dialog = new SaveFileDialog();
dialog.Filter = "Text File|*.txt";
var result = dialog.ShowDialog();
if (result != DialogResult.OK)
    return;
StringBuilder builder = new StringBuilder();
int rowcount = dgvSum.Rows.Count;
int columncount = dgvSum.Columns.Count;
for (int i = 0; i < rowcount - 1; i++)
{
    List<string> cols = new List<string>();
    for (int j = 0; j < columncount - 1; j++)
    {
        cols.Add(dgvSum.Rows[i].Cells[j].Value.ToString());                    
    }
    builder.AppendLine(string.Join(",", cols));
}
System.IO.File.WriteAllText(dialog.FileName, builder.ToString());
MessageBox.Show(@"Text file was created.");
پاسخ در 1395/03/19 توسط
0

کد زیر رو تست کنید ببینید مشکل برطرف میشه:

try
{
    SaveFileDialog dialog = new SaveFileDialog();
    dialog.Filter = "Text File|*.txt";
    var result = dialog.ShowDialog();
    if (result != DialogResult.OK)
        return;
    StringBuilder builder = new StringBuilder();
    int rowcount = dgvSum.Rows.Count;
    for (int i = 0; i < rowcount - 1; i++)
    {
        builder.AppendLine(dgvSum.Rows[i].Cells[0].Value.ToString());
    }
    System.IO.File.WriteAllText(dialog.FileName, builder.ToString());
    MessageBox.Show(@"Text file was created.");
}
catch (Exception exception)
{
    MessageBox.Show(exception.ToString());
    //Console.WriteLine(exception);
}
پاسخ در 1395/03/19 توسط
0

باز هم چیزی توی فایل تکست نیست.

پاسخ در 1395/03/19 توسط
0

کد رو بصورت زیر تغییر دادم

            SaveFileDialog dialog = new SaveFileDialog();
            dialog.Filter = "Text File|*.txt";
            var result = dialog.ShowDialog();
            if (result != DialogResult.OK)
                return;
            StringBuilder builder = new StringBuilder();
            int rowcount = dgvSum.Rows.Count;
            int columncount = dgvSum.Columns.Count;
            for (int i = 0; i < rowcount - 1; i++)
            {
                for (int j=0; j < columncount-1 ; j++)
                {
                    builder.AppendLine(dgvSum.Rows[i].Cells[j].Value.ToString());
                }
            }
            System.IO.File.WriteAllText(dialog.FileName, builder.ToString());
            MessageBox.Show(@"Text file was created.");

ولی محتوای فایل تکست بصورت زیره:

هومن فرخی
یقبلیلی
20خرداد1397
26450
0
450
150
450
750
600
600
300
300
1500
2000
0
0
0
0
0
0
0
0
0
هومن فرخی
یقبلیلی
20خرداد1397
26450
0
450
150
450
750
600
600
300
300
1500
2000
0
0
0
0
0
0
0
0
0
هومن فرخی
یقبلیلی
20خرداد1397
26450
0
450
150
450
750
600
600
300
300
1500
2000
0
0
0
0
0
0
0
0
0
هومن فرخی
یقبلیلی
20خرداد1397
26450
0
450
150
450
750
600
600
300
300
1500
2000
0
0
0
0
0
0
0
0
0
هومن فرخی
یقبلیلی
20خرداد1397
26450
0
450
150
450
750
600
600
300
300
1500
2000
0
0
0
0
0
0
0
0
0

یعنی هر سلول دیتا گرید ویو رو توی یه سطر میزنه!

پاسخ در 1395/03/19 توسط
0

نه بازم درست نشد!!!!!!

فقط ستون اول دیتا گرید ویو رو میزنه توی تکست

پاسخ در 1395/03/19 توسط
1

با سلام، وارد تنظیمات پروژه شده و از بخش Security گزینه Enable ClickOnce security settings رو انتخاب کنید. در ادامه از تنظیمات همین بخش گزینه this is full trust application رو انتخاب کنید ببینید مشکل حل میشه؟

با سلام، وارد تنظیمات پروژه شده و از بخش Security گزینه Enable ClickOnce security settings رو انتخاب کنید. در ادامه از تنظیمات همین بخش گزینه this is full trust application رو انتخاب کنید ببینید مشکل حل میشه؟

||http://programming.tosinso.com/files/get/36f08c64-ecd8-4074-b401-877940846869||
پاسخ در 1395/03/19 توسط
0

اگه بخوام اسم ستون ها هم توی فایل تکست بیاد باید چکار کنم؟

پاسخ در 1395/03/19 توسط
1

کد رو به صورت زیر تغییر بدید:

builder.AppendLine(string.Join(",", cols.ToArray()));
پاسخ در 1395/03/19 توسط
1

دستورات بالا رو به صورت زیر تغییر بدید، یعنی بعد از for دستور flush رو اضافه کنید، برای انتخاب فایل هم از SaveFileDialog استفاده کنید:

try
{
    SaveFileDialog dialog = new SaveFileDialog();
    dialog.Filter = "Text File|*.txt";
    var result = dialog.ShowDialog();
    if (result != DialogResult.OK)
        return;
    using (FileStream fileStream = File.Open(dialog.FileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite))
    using (TextWriter sw = new StreamWriter(fileStream))
    {
        int rowcount = dgvSum.Rows.Count;
        for (int i = 0; i < rowcount - 1; i++)
        {
            sw.WriteLine(dgvSum.Rows[i].Cells[0].Value.ToString());
        }
        sw.Flush();
    }
    MessageBox.Show(@"Text file was created.");
}
catch (Exception exception)
{
    MessageBox.Show(exception.ToString());
    //Console.WriteLine(exception);
}
پاسخ در 1395/03/19 توسط
1

با همین مکانیزم بالا، قبل از اضافه کردن مقادیر ستون ها به StringBuilder، نام ستون ها رو اضافه کنید.

پاسخ در 1395/03/19 توسط
0

با کد بالا در قسمت:

    builder.AppendLine(string.Join(",", cols));

ارور زیر رو میده:

Severity	Code	Description	Project	File	Line	Suppression State
Error	CS1503	Argument 2: cannot convert from 'System.Collections.Generic.List<string>' to 'string[]'	WindowsFormsApplication2	C:\Users\kanoonadmin\Desktop\WindowsFormsApplication2\WindowsFormsApplication2\Form1.cs	482	Active

پاسخ در 1395/03/19 توسط

پاسخ شما