DataGridView导入导出Txt文档

本文介绍了一种在C#中实现TXT文件与DataGridView之间数据相互转换的方法。包括从TXT文件读取数据填充DataGridView,以及将DataGridView的数据导出到TXT文件的具体实现。文中提供了完整的代码示例,展示了如何处理文件读写过程中的异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导入方法:

      #region 方法--txt导入dgv
        /// <summary>
        /// 将Txt中数据读入DataTable中
        /// </summary>
        /// <param name="strFileName">文件名称</param>
        /// <param name="isHead">是否包含表头</param>
        /// <param name="strSplit">分隔符</param>
        /// <param name="strErrorMessage">错误信息</param>
        /// <returns>DataTable</returns>
        public static DataTable TxtToDataTable(string strFileName, char strSplit, ref string strErrorMessage)
        {
            DataTable dtReturn = new DataTable();

            try
            {
                string[] strFileTexts = File.ReadAllLines(strFileName,System.Text.Encoding.UTF8);

                if (strFileTexts.Length == 0) // 如果没有数据
                {
                    strErrorMessage = "文件中没有数据!";
                    return null;
                }

                string[] strLineTexts = strFileTexts[0].Split(strSplit);
                if (strLineTexts.Length == 0)
                {
                    strErrorMessage = "文件中数据格式不正确!";
                    return null;
                }


                for (int i = 0; i < strLineTexts.Length; i++)
                {
                    dtReturn.Columns.Add("Columns" + i.ToString());
                }



                for (int i = 0; i < strFileTexts.Length; i++)
                {
                    strLineTexts = strFileTexts[i].Split(strSplit);
                    DataRow dr = dtReturn.NewRow();
                    for (int j = 0; j < strLineTexts.Length; j++)
                    {
                        dr[j] = strLineTexts[j].ToString();
                    }
                    dtReturn.Rows.Add(dr);
                }
            }
            catch (Exception ex)
            {
                strErrorMessage = "读入数据出错!" + ex.Message;

                return null;
            }

            return dtReturn;
        }
#endregion


导出方法:

       #region 方法--dgv导出到txt
        //导出到txt
        //strFileName文件名,strSplit文件中数据间的分隔符
        public static bool DataTableToTxt(DataGridView gridview, string strFileName, char strSplit)
        {
            if (gridview == null || gridview.Rows.Count == 0)
                return false;

            FileStream fileStream = new FileStream(strFileName, FileMode.OpenOrCreate);
            StreamWriter streamWriter = new StreamWriter(fileStream, System.Text.Encoding.UTF8);

            StringBuilder strBuilder = new StringBuilder();

            try
            {
                for (int i = 0; i < gridview.Rows.Count; i++)
                {
                    strBuilder = new StringBuilder();
                    for (int j = 0; j < gridview.Columns.Count; j++)
                    {
                        strBuilder.Append(gridview.Rows[i].Cells[j].Value.ToString() + strSplit);
                    }
                    strBuilder.Remove(strBuilder.Length - 1, 1); // 将最后添加的一个strSplit删除掉
                    streamWriter.WriteLine(strBuilder.ToString());
                }
            }
            catch (Exception ex)
            {
                string strErrorMessage = ex.Message;
                return false;
            }
            finally
            {
                streamWriter.Close();
                fileStream.Close();
            }

            return true;
        }
        #endregion


运行效果:

 
窗口load:
private void TxtFromTo_Load(object sender, EventArgs e)
        {
            DataTable dtb1;
            string err = "";
            dtb1 = TxtToDataTable("Test.txt",',',ref err);
            dataGridView1.DataSource = dtb1;
            //dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
            dataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            dataGridView1.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            dataGridView1.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            dataGridView1.Columns[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            dataGridView1.Columns[0].FillWeight = 25;
            dataGridView1.Columns[1].FillWeight = 25;
            dataGridView1.Columns[2].FillWeight = 25;
            dataGridView1.Columns[3].FillWeight = 25;
            DataTableToTxt(dataGridView1, "aa.txt", ',');
        }

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值