簡體   English   中英

使用格式化將網格中的數據寫入文本文件

[英]Writing data in a grid to a text file with formatiing

我在UI(勝利表單)中有一個DataGridView,現在想將網格中的數據寫入文本文件。

我已經嘗試使用以下代碼。 但是它沒有給我想要的輸出。

public void WriteToTextFile (DataGridView dgv)
        {
            string file_name = "D:\\test1.txt";

        System.IO.StreamWriter objWriter;

        objWriter = new System.IO.StreamWriter(file_name);

        int count = dgv.Rows.Count;
        for (int row = 0; row < count-1; row++)
        {
            int colCount = dgv.Rows[row].Cells.Count; 

            for ( int col = 0; col < colCount-1; col++)  
            {
                objWriter.WriteLine(dgv.Rows[row].Cells[col].Value.ToString());
            }
        // record seperator could be written here.
        }
        objWriter.Close();
        }

輸出(僅顯示單個項目(一個網格行))

8130201489

D.I.S.Peter

292331pslr

0100507563

Sharpe Eyes Pvt Ltd

A002    

SalaryFeb11  

110228

但是所需的輸出是...(這不應該是一行)

8130201489D.I.S.PETER     2923319SLR0100507563SHARPEYES PVT LTD A002          SALARYFEB11    110228      @

如何修改上面的代碼來解決這個問題?
另外如果我在單詞之間需要一些額外的空格怎么插入呢? 寫完后,我想將擴展名.txt更改為.dat

不要使用WriteLine()寫入每個值。 而是使用StringBuilder構造每行,然后將完整的行寫為輸出:

using System.IO;
using System.Text;   

public void WriteToTextFile (DataGridView dgv)
{
    String file_name = "D:\\test1.txt";
    using (StreamWriter objWriter = new StreamWriter(file_name))
    {
        for (Int32 row = 0; row < dgv.Rows.Count - 1; row++)
        {
            StringBuilder sb = new StringBuilder();
            for (Int32 col = 0; col < dgv.Rows[row].Cells.Count - 1; col++)  
            {
                if (!String.IsNullOrEmpty(sb.ToString()))
                    sb.Append(",");  //any delimiter you choose
                sb.Append(dgv.Rows[row].Cells[col].Value.ToString().ToUpper());
            }
            objWriter.WriteLine(sb.ToString());
        }
    }

    //Rename the file
    File.Move(file_name, Path.ChangeExtension(file_name, "dat"));  //with or without a leading period
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM