【问题标题】:Writing data in a grid to a text file with formatiing将网格中的数据写入带格式的文本文件
【发布时间】:2014-05-29 11:53:54
【问题描述】:

我在 UI(win 表单)中有一个 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 怎么做。

【问题讨论】:

  • 使用 Write(text),而不是 WriteLine(text) :)。要添加新行,请使用 WriteLine()

标签: c# .net text datagridview outputstream


【解决方案1】:

不要将每个值都写成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
}

【讨论】:

  • 嗨,实际上我需要大写文件中的文本。用同样的方法可行吗?
猜你喜欢
  • 2014-12-01
  • 1970-01-01
  • 2015-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
  • 2023-04-05
相关资源
最近更新 更多