导出TXT关键类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.IO;
using System.Globalization;
using System.Windows.Forms; namespace Demo
{
/// <summary>
/// 导出TXT
/// 罗旭成
/// 2014-4-15
/// </summary>
public class ExportTxt
{ #region * 将DataTable指定的列,导出到TXT文件.
/// <summary>
/// 将DataTable指定的列,导出到TXT文件.
/// </summary>
/// <param name="pDataTable">数据源表</param>
/// <param name="pColName">列名</param>
/// <param name="pColCaption">标题(未指定则使用列名)</param>
/// <param name="pFilePath">完整的路径和文件名</param>
public static void UTF8_SaveToTXT(DataTable pDataTable, string pColName, string pColCaption, string pFilePath)
{
//如果文件存在则删除
if (File.Exists(pFilePath))
{
File.Delete(pFilePath);
}
//********************************************************************************************
using (FileStream stream = new FileStream(pFilePath, FileMode.Create, FileAccess.Write))
{
using (StreamWriter writer = new StreamWriter(stream, Encoding.UTF8))
{
//------
if ((pColName == null) || (pColName.Trim() == "")) { return; }
if (pColCaption == null) { pColCaption = ""; }
String[] xColArray = pColName.Split(new Char[] { ',' });
String[] xColCapArray = pColCaption.Split(new Char[] { ',' });
for (int xI = , xN = xColArray.Length; xI < xN; xI++)
{
xColArray.SetValue(xColArray[xI].Trim(), xI);
}
for (int xI = , xN = xColCapArray.Length; xI < xN; xI++)
{
xColCapArray.SetValue(xColCapArray[xI].Trim(), xI);
}
//--*************************************************************************************************
//--如果标题不为空
if (pColCaption.Trim() != "")
{
if (xColArray.Length == xColCapArray.Length)//标题和列名的数量必须相同
{
int x = ;
Boolean xFind = false;
for (int j = ; j < xColArray.Length; j++)
{
//设计列名
for (int i = ; i < pDataTable.Columns.Count; i++)
{
if (xColArray[j] == pDataTable.Columns[i].ColumnName)
{
xFind = true;
UTF8_WriteString(writer, xColCapArray[j - ], , );//(列名)不是最后一列的处理方式
x = j;
break;
}
}
if (xFind == false)
{
MessageBox.Show("指定的列名不存在!");
return;
}
}
UTF8_WriteString(writer, xColCapArray[x], , );//(列名)最后一列的处理方式
//--************************************************************************************************
//设计列数据
int y = ;
//-------------
for (int b = ; b < pDataTable.Columns.Count; b++)
{
for (int a = ; a < xColArray.Length; a++)
{
if (xColArray[a] == pDataTable.Columns[b].ColumnName)
{
y = b;//获取最大列的索引
}
}
}
//-------------
for (int j = ; j < pDataTable.Rows.Count; j++)
{
for (int i = ; i < pDataTable.Columns.Count; i++)
{
String pColType = pDataTable.Columns[i].DataType.Name.ToString();//获取列类型
for (int k = ; k < xColArray.Length; k++)
{
if (xColArray[k - ] == pDataTable.Columns[i].ColumnName.ToString())
{
//***************************************************************************************
//--不是最后一列的处理方式
if (pDataTable.Rows[j][i].ToString() != "")
{
switch (pColType)
{
case "String":
{
UTF8_WriteString(writer, pDataTable.Rows[j][i].ToString(), , );
break;
}
case "Int32":
{
UTF8_WriteString(writer, pDataTable.Rows[j][i].ToString(), , );
break;
}
case "Boolean":
{
UTF8_WriteBoolean(writer, Convert.ToBoolean(pDataTable.Rows[j][i]), , );
break;
}
case "DateTime":
{
UTF8_WriteDate(writer, Convert.ToDateTime(pDataTable.Rows[j][i]), "yyyy-MM-dd", , );
break;
}
case "Decimal":
{
UTF8_WriteDecimal(writer, Convert.ToDecimal(pDataTable.Rows[j][i]), , , );
break;
}
default:
{
UTF8_WriteString(writer, pDataTable.Rows[j][i].ToString(), , );
break;
}
}
}
else
{
UTF8_WriteString(writer, "", , );
}
}
}
}
//***********************************************************************************************
//********************最后一列的处理方式*********************************************************
String pColType1 = pDataTable.Columns[y].DataType.Name.ToString();//获取列类型
if (pDataTable.Rows[j][y].ToString() != "")
{
switch (pColType1)
{
case "String":
{
UTF8_WriteString(writer, pDataTable.Rows[j][y].ToString(), , );
break;
}
case "Int32":
{
UTF8_WriteString(writer, pDataTable.Rows[j][y].ToString(), , );
break;
}
case "Boolean":
{
UTF8_WriteBoolean(writer, Convert.ToBoolean(pDataTable.Rows[j][y]), , );
break;
}
case "DateTime":
{
UTF8_WriteDate(writer, Convert.ToDateTime(pDataTable.Rows[j][y]), "yyyy-MM-dd", , );
break;
}
case "Decimal":
{
UTF8_WriteDecimal(writer, Convert.ToDecimal(pDataTable.Rows[j][y]), , , );
break;
}
default:
{
UTF8_WriteString(writer, pDataTable.Rows[j][y].ToString(), , );
break;
}
}
}
else
{
UTF8_WriteString(writer, "", , );
}
//**********************************************************************************************
}
}
else
{
MessageBox.Show("指定的列不正确!");
return;
}
}
else
//--如果标题为空
{
//****************************************************************************
int m = ;
Boolean xFind = false;
//****************************************************************************
//***********************设计列名*********************************************
for (int i = ; i < xColArray.Length; i++)
{
for (int j = ; j < pDataTable.Columns.Count; j++)
{
if (xColArray[i] == pDataTable.Columns[j].ColumnName)
{
xFind = true;
UTF8_WriteString(writer, xColArray[i - ], , );//(列名)不是最后一列的处理方式
m = i;
break;
}
}
if (xFind == false)
{
MessageBox.Show("指定的列名不存在!");
return;
}
}
UTF8_WriteString(writer, xColArray[m], , );//(列名)最后一列的处理方式
//***************************************************************************
//设计列数据
int n = ;
//----
for (int i = ; i < pDataTable.Columns.Count; i++)
{
for (int j = ; j < xColArray.Length; j++)
{
if (xColArray[j] == pDataTable.Columns[i].ColumnName)
{
n = i;//获取最大列的索引值
}
}
}
//----
for (int i = ; i < pDataTable.Rows.Count; i++)
{
for (int j = ; j < pDataTable.Columns.Count; j++)
{
String pColType = pDataTable.Columns[j].DataType.Name.ToString();//获取列;类型
for (int k = ; k < xColArray.Length; k++)
{
if (xColArray[k - ] == pDataTable.Columns[j].ColumnName.ToString())
{
if (pDataTable.Rows[i][j].ToString() != "")
{
switch (pColType)
{
case "String":
{
UTF8_WriteString(writer, pDataTable.Rows[i][j].ToString(), , );
break;
}
case "Int32":
{
UTF8_WriteString(writer, pDataTable.Rows[i][j].ToString(), , );
break;
}
case "Boolean":
{
UTF8_WriteBoolean(writer, Convert.ToBoolean(pDataTable.Rows[i][j]), , );
break;
}
case "DateTime":
{
UTF8_WriteDate(writer, Convert.ToDateTime(pDataTable.Rows[i][j]), "yyyy-MM-dd", , );
break;
}
case "Decimal":
{
UTF8_WriteDecimal(writer, Convert.ToDecimal(pDataTable.Rows[i][j]), , , );
break;
}
default:
{
UTF8_WriteString(writer, pDataTable.Rows[i][j].ToString(), , );
break;
}
}
}
else
{
UTF8_WriteString(writer, "", , );
}
}
}
}
//***********************************************************************************************
//********************最后一列的处理方式*********************************************************
String pColType2 = pDataTable.Columns[n].DataType.Name.ToString();//获取列类型
if (pDataTable.Rows[i][n].ToString() != "")
{
switch (pColType2)
{
case "String":
{
UTF8_WriteString(writer, pDataTable.Rows[i][n].ToString(), , );
break;
}
case "Int32":
{
UTF8_WriteString(writer, pDataTable.Rows[i][n].ToString(), , );
break;
}
case "Boolean":
{
UTF8_WriteBoolean(writer, Convert.ToBoolean(pDataTable.Rows[i][n]), , );
break;
}
case "DateTime":
{
UTF8_WriteDate(writer, Convert.ToDateTime(pDataTable.Rows[i][n]), "yyyy-MM-dd", , );
break;
}
case "Decimal":
{
UTF8_WriteDecimal(writer, Convert.ToDecimal(pDataTable.Rows[i][n]), , , );
break;
}
default:
{
UTF8_WriteString(writer, pDataTable.Rows[i][n].ToString(), , );
break;
}
}
}
else
{
UTF8_WriteString(writer, "", , );
}
//********************************************************************************************************
}
}
}
}
}
#endregion #region * 转换日期的输出格式
/// <summary>
/// 转换日期的输出格式
/// </summary>
/// <param name="pStreamWriter"></param>
/// <param name="pValue"></param>
/// <param name="pformat">1,2,3,4四种情况</param>
/// <param name="pSymbol"></param>
public static void UTF8_WriteDate(StreamWriter pStreamWriter, DateTime pValue, String pformat, int pLen, int pSymbol)
{
UTF8_WriteString(pStreamWriter, pValue.ToString(pformat, DateTimeFormatInfo.InvariantInfo), pLen, pSymbol);
}
#endregion #region * 转换小数的输出位数
/// <summary>
/// 转换小数的输出位数
/// </summary>
/// <param name="pStreamWriter"></param>
/// <param name="pValue"></param>
/// <param name="pSize">限制输出小数的位数</param>
/// <param name="pSymbol"></param>
public static void UTF8_WriteDecimal(StreamWriter pStreamWriter, decimal pValue, int pSize, int pLen, int pSymbol)
{
UTF8_WriteString(pStreamWriter, decimal.Round(pValue, pSize, MidpointRounding.AwayFromZero).ToString(), pLen, pSymbol);
}
#endregion #region * 转换Boolean值
/// <summary>
/// 第一种情况,输出数字0,1
/// </summary>
/// <param name="pStreamWriter"></param>
/// <param name="pformat">true,false</param>
/// <param name="pSymbol"></param>
public static void UTF8_WriteBoolean(StreamWriter pStreamWriter, Boolean pValue, int pType, int pSymbol)
{
if (pType == )
{
if (pValue == true) { UTF8_WriteString(pStreamWriter, "true", , pSymbol); }
if (pValue == false) { UTF8_WriteString(pStreamWriter, "false", , pSymbol); }
}
if (pType == )
{
if (pValue == true) { UTF8_WriteString(pStreamWriter, "", , pSymbol); }
if (pValue == false) { UTF8_WriteString(pStreamWriter, "", , pSymbol); }
}
} /// <summary>
/// 第二种情况,输出TRUE,FALSE
/// </summary>
/// <param name="pStreamWriter"></param>
/// <param name="pValue">0,1</param>
/// <param name="pSymbol"></param>
public static void UTF8_WriteBoolean(StreamWriter pStreamWriter, int pValue, int pType, int pSymbol)
{
if (pType == )
{
if (pValue == ) { UTF8_WriteString(pStreamWriter, "", , pSymbol); }
if (pValue == ) { UTF8_WriteString(pStreamWriter, "", , pSymbol); }
}
if (pType == )
{
if (pValue == ) { UTF8_WriteString(pStreamWriter, "true", , pSymbol); }
if (pValue == ) { UTF8_WriteString(pStreamWriter, "false", , pSymbol); }
}
}
#endregion #region * 写入字符串,分列符和换行符
/// <summary>
/// 写入字符串,分列符和换行符
/// </summary>
/// <param name="pStreamWriter"></param>
/// <param name="pString"></param>
/// <param name="pType">[1]:Add Tab [2]:Enter</param>
public static void UTF8_WriteString(StreamWriter pStreamWriter, string pString, int pLen, int pSymbol)
{
if (pLen < ) { MessageBox.Show("你输入的长度不符合要求!"); return; }
if (pLen == )
{
pStreamWriter.Write(pString);
}
else
{
pStreamWriter.Write(pString.Substring(, pLen));
}
UTF8_WriteSymbol(pStreamWriter, pSymbol);
}
#endregion #region * 写入分列符号和回车换行符
/// <summary>
/// 写入分列符号和回车换行符
/// </summary>
/// <param name="pStreamWriter"></param>
/// <param name="pType">[1]:Add Tab [2]:Enter</param>
public static void UTF8_WriteSymbol(StreamWriter pStreamWriter, int pType)
{
//--EFBBBF UTF8识别标识.
byte Symbol1 = 0X0D;
byte Symbol2 = 0X0A;
byte Symbol3 = 0X09;
string vTab = ((char)Symbol3).ToString(); // Tab分列
string vEnter = ((char)Symbol1).ToString() + ((char)Symbol2).ToString(); //回车换行
if (pType == ) { pStreamWriter.Write(vTab); }
if (pType == ) { pStreamWriter.Write(vEnter); }
}
#endregion
}
}

导出TXT的例子:

        #region * 导出TXT文件
private void btnExportTxt_Click(object sender, EventArgs e)
{
if (this.txtSaveDir.Text.Trim() != "")
{
if (DemoTb != null && DemoTb.Rows.Count > )
{
ExportTxt.UTF8_SaveToTXT(DemoTb, "姓名,年龄,性别,籍贯,创建时间", "姓名,年龄,性别,籍贯,创建时间", this.txtSaveDir.Text.Trim());
MessageBox.Show("导出文件成功!");
}
else
{
MessageBox.Show("数据为空,不能进行导出!");
}
}
else
{
MessageBox.Show("导出文件目录不能为空!");
}
}
#endregion

导入TXT的例子:

      #region * 导入TXT文件
private void btnImportTxt_Click(object sender, EventArgs e)
{
try
{
if (this.txtFindDir.Text.Trim() != "")
{
byte Symbol1 = 0X0D;
byte Symbol2 = 0X0A;
string vEnter = ((char)Symbol1).ToString() + ((char)Symbol2).ToString(); //回车换行
//--
StreamReader reader = new StreamReader(this.txtFindDir.Text.Trim());
string str = string.Empty;
ArrayList arrayList = new ArrayList();
str = reader.ReadToEnd();
if (!string.IsNullOrEmpty(str))
{
string[] arrstr = str.Split(vEnter.ToCharArray());
foreach (string item in arrstr)
{
//去掉空行
if (!string.IsNullOrEmpty(item))
{
arrayList.Add(item);
}
}
}
if (arrayList != null && arrayList.Count > )
{
DemoTb.Clear();
//第二行开始,第一行为标题
for (int i = ; i < arrayList.Count; i++)
{
string[] arr = arrayList[i].ToString().Split("\t".ToCharArray());
DataRow dr = DemoTb.NewRow();
dr["姓名"] = arr[];
dr["年龄"] = arr[];
dr["性别"] = arr[];
dr["籍贯"] = arr[];
dr["创建时间"] = arr[];
DemoTb.Rows.Add(dr);
}
}
this.dataGridView1.DataSource = DemoTb;
}
else
{
MessageBox.Show("导入文件目录不能为空!");
}
}
catch (Exception eMsg)
{
MessageBox.Show("导入数据出错:" + eMsg.ToString());
}
}
#endregion

以上即可完成对TXT文件的导入导出。

C# 导出导入TXT文件的更多相关文章

  1. 用DataGridView导入TXT文件,并导出为XLS文件

    使用 DataGridView 控件,可以显示和编辑来自多种不同类型的数据源的表格数据.也可以导出.txt,.xls等格式的文件.今天我们就先介绍一下用DataGridView把导入txt文件,导出x ...

  2. mysql使用load导入txt文件所遇到的问题及解决方法

    导入txt文件,有导入向导这种方式: 另外可以使用load的方式导入.最开始使用以下代码插入: load data local infile 'F:\\Data\\predict_data.txt' ...

  3. php 读取网页源码 , 导出成txt文件, 读取xls,读取文件夹下的所有文件的文件名

    <?php // 读取网页源码$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLO ...

  4. mysql中导入txt文件

    1 windows 下 mysql导入txt文件(使用mysql的workbench) load data local infile 'path' into table table_name fiel ...

  5. .Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) 通过MVC控制器导出导入Excel文件(可用于java SSH架构)

    .Net MVC  导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) [原文地址] 通过MVC控制器导出导入Excel文件(可用于java SSH架构)   public cl ...

  6. 将Maple输出的LaTex导出到txt文件

    将Maple输出的LaTex导出到txt文件 1. 生成LATEX Maple可以把它的表达式转换成LATEX, 使用latex命令即可: > latex(x^2+y^2=z^2); {x}^{ ...

  7. Mysql 8.0 导入txt文件操作(课程实验)

    一.实验准备: 1.实验设备:Dell laptop 7559; 2.实验环境:windows 10操作系统; 3.数据库版本:mysql 8.0; 二.实验目的: 1.将一个宠物表pet.txt文件 ...

  8. 有道云笔记导入txt文件的方法

    有道云笔记pc版迷之不能导入txt文件 尝试很多方法后发现 通过网页版 有道云 可以直接上传 但是pc版不能查看而移动端可以查看 很迷~

  9. 【其他】【navicat】【1】navicat导入txt文件中文乱码问题解决

    正文: TXT文件默认编码为ANSI,另存为编码为UTF-8的文本文件即可 备注: 1,一般需要导入的数据都是一张excel表,需要将excel表另存为“文本文件(制表符分隔)(*.txt)”保存类型 ...

随机推荐

  1. golang官方实现如何对httpserver做频率限制(最大连接数限制)

    一般海量处理服务,都会对服务做个最大连接数限制,超过该限制之后,拒绝服务,避免发生雪崩,压坏服务. 使用golang来编写httpserver时,如何进行呢?官方已经有实现好的包. 使用示例: imp ...

  2. Linux升级python至3.4.4

    wget https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tgz ls .tgz mkdir /usr/local/python3 cd Py ...

  3. Celery(一个懂得 异步任务、定时任务、周期任务 的"芹菜")

    一.什么是Celery? Celery 是基于Python实现的模块,用于执行异步.定时.周期任务的,其结构的组成是: - 用户任务 app - 管道 broker 用于存储任务(官方推荐 redis ...

  4. 你没见过的python语法

    目录: 1.不一样的列表 2.改变type中的规则,创建类:类属性大写 3.%s字串格式化,不用元组用字典 4.没有参数抛出异常 5.字符串签名加f 格式化字符串 6.attr库 1.不一样的列表 l ...

  5. Parallel Programming-实现并行操作的流水线(生产者、消费者)

    本文介绍如何使用C#实现并行执行的流水线(生产者消费者): 1.流水线示意图 2.实现并行流水线 一.流水线示意图 上图演示了流水线,action1接收input,然后产生结果保存在buffer1中, ...

  6. 从iOS的图片圆角想到渲染

    圆角是一种很常见的视图效果,相比于直角,它更加柔和优美,易于接受.设置圆角会带来一定的性能损耗,如何提高性能是一个需要重点讨论的话题. 大家常见的圆角代码x.layer.cornerRadius = ...

  7. 130. Surrounded Regions(周围区域问题 广度优先)(代码未完成!!)

    Given a 2D board containing 'X' and 'O' (the letter O), capture all regions surrounded by 'X'. A reg ...

  8. ZOJ - 2587 Unique Attack (判断最小割是否唯一)

    题意:判断最小割是否唯一. 分析:跑出最大流后,在残余网上从源点和汇点分别dfs一次,对访问的点都打上标记. 若还有点没有被访问到,说明最小割不唯一. https://www.cnblogs.com/ ...

  9. Loadrunner自带协议分析工具:Protocol Advisor

    录制脚本之前,选对协议很关键,否则错误的协议会导致Virtual User Generator 录制不到脚本,或录制的脚本不完整,有些应用可能需要选择多个协议才能完整的记录 客户端与服务器端的请求. ...

  10. 第三方库(JSONModel)出现file not found

    http://stackoverflow.com/questions/5198905/h-file-not-found 具体方法: 在导航栏中 点击 Product --> Clean 成功之后 ...