C# 导出导入TXT文件
导出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文件的更多相关文章
- 用DataGridView导入TXT文件,并导出为XLS文件
使用 DataGridView 控件,可以显示和编辑来自多种不同类型的数据源的表格数据.也可以导出.txt,.xls等格式的文件.今天我们就先介绍一下用DataGridView把导入txt文件,导出x ...
- mysql使用load导入txt文件所遇到的问题及解决方法
导入txt文件,有导入向导这种方式: 另外可以使用load的方式导入.最开始使用以下代码插入: load data local infile 'F:\\Data\\predict_data.txt' ...
- php 读取网页源码 , 导出成txt文件, 读取xls,读取文件夹下的所有文件的文件名
<?php // 读取网页源码$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLO ...
- mysql中导入txt文件
1 windows 下 mysql导入txt文件(使用mysql的workbench) load data local infile 'path' into table table_name fiel ...
- .Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) 通过MVC控制器导出导入Excel文件(可用于java SSH架构)
.Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) [原文地址] 通过MVC控制器导出导入Excel文件(可用于java SSH架构) public cl ...
- 将Maple输出的LaTex导出到txt文件
将Maple输出的LaTex导出到txt文件 1. 生成LATEX Maple可以把它的表达式转换成LATEX, 使用latex命令即可: > latex(x^2+y^2=z^2); {x}^{ ...
- Mysql 8.0 导入txt文件操作(课程实验)
一.实验准备: 1.实验设备:Dell laptop 7559; 2.实验环境:windows 10操作系统; 3.数据库版本:mysql 8.0; 二.实验目的: 1.将一个宠物表pet.txt文件 ...
- 有道云笔记导入txt文件的方法
有道云笔记pc版迷之不能导入txt文件 尝试很多方法后发现 通过网页版 有道云 可以直接上传 但是pc版不能查看而移动端可以查看 很迷~
- 【其他】【navicat】【1】navicat导入txt文件中文乱码问题解决
正文: TXT文件默认编码为ANSI,另存为编码为UTF-8的文本文件即可 备注: 1,一般需要导入的数据都是一张excel表,需要将excel表另存为“文本文件(制表符分隔)(*.txt)”保存类型 ...
随机推荐
- go-008-循环语句
一.循环语句[只有for] 1.基础结构: Go语言的For循环有3中形式,只有其中的一种使用分号. 和 C 语言的 for 一样: for init; condition; post { } 和 C ...
- PLSQLDeveloper安装与配置
1.前提:首先要有oracle数据库或者有oracle服务器,才可以实现使用PLSQL Developer 工具连接到oracle数据库进行开发 2.下载PLSQLDeveloper并解压 3.配置环 ...
- 《闪存问题之READ DISTURB》总结
来自 http://www.ssdfans.com/?p=1778 闪存存在几个问题,影响着数据可靠性: 1.擦除次数,闪存擦除次数增多,会使隔离栅极的电化学键变弱. 2.data retention ...
- a=a+1背后的内存模型和CPU高速缓存
学过JAVA的人都知道,程序运行过程中的临时数据,都是从外部存储设备调入内存(物理内存)中,再进行读写操作的.而计算机在执行程序时,对程序的每条指令都是在CPU中执行的,而指令的执行,势必涉及到对数据 ...
- Linux 最常用的20条命令
1.cd命令 这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径.如: cd /root/Docements # 切 ...
- 解析库之——beautifulsoup
阅读目录 一 介绍 二 基本使用 三 遍历文档树 四 搜索文档树 五 修改文档树 六 总结 一 介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通 ...
- yii2 框架中的即点即改入库
视图层 <td><span class='num' id="<?php echo $value['goods_attr_id']?>">< ...
- SVN无法Cleanup
错误如下: 原因:svn提交遇到恶心的问题,可能是因为上次cleanup中断后,进入死循环了 解决方法:清空svn的队列 1.下载Sqlite3.exe 2.找到你项目的.svn文件,查看是否存在wc ...
- 获取一个表单字段中多条数据并转化为json格式
如图需要获取下面两个li标签里面的数据,然后传给后台:而后台接收的数据格式是json的,所以需要把两个li里面的信息转化为以下格式的. {recieverName:小红,recieverPhone:1 ...
- XDU 1140 寻找万神(字符串匹配)
学会strstr的使用 strstr(str1,str2)函数用于判断字符串str2是否是str1的子串.如果是,则该函数返回str2在str1中首次出现的地址:否则,返回NULL. #include ...