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)”保存类型 ...
随机推荐
- 如何在 cmd 中打开设备管理器,如何找到打开其他设备的命令?
Win + R 组合键后,输入 devmgmt.msc 即可. 任意打开一个软件,然后查看其命令行,找到该程序的实际进程名即可. 注意:需要打开的程序需要放在设置过环境变量的目录,确保执行 cmd 时 ...
- LeetCode_Search in Rotated Sorted Array
题目: Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 ...
- Android Volley全然解析(四),带你从源代码的角度理解Volley
版权声明:本文出自郭霖的博客,转载必须注明出处. https://blog.csdn.net/sinyu890807/article/details/17656437 转载请注明出处:http://b ...
- 002-java语言基础
一.安装卸载 卸载:控制面板 安装:下载对应版本 注意1.安装路径→尽量不要有空格和汉字 注意2.安装之后,jre可以不用安装,jdk中含有 二.环境变量 环境变量:理解,一些快捷路径.方便快速查找应 ...
- IPFS搭建&集群
下载go-ipfs wget https://github.com/ipfs/go-ipfs/releases/download/v0.4.17/go-ipfs_v0.4.17_linux-amd64 ...
- Java栈之顺序栈存储结构实现
一.栈的基本定义 栈是一种数据结构,它代表一种特殊的线性表,这种线性表只能在固定一端(通常认为是线性表的尾端)进行插入.删除操作的特殊线性表,通常就是在线性表的尾端进行插入.删除操作. 二.顺序栈的实 ...
- tkprof参数详解
tkprof参数详解 table=schema.table 指定tkprof处理sql trace文件时临时表的模式名和表名 insert=scriptfile 创建一个文件名为scriptfile的 ...
- Linux系统——NFS网络文件系统
在企业集群架构的工作场景中,NFS网络文件系统一般被用来存储共享视频,图片,附件等静态资源文件,通常网站用户上传的文件都会放到NFS共享里,然后前端所有的节点访问这些静态资源时都会读取NFS存储上的资 ...
- Linux系统——ACL权限控制及特殊权限
ACL权限控制 ACL(access control list),可以提供除属主.属组.其他人的rwx权限之外的细节权限设定 ACL的权限控制 (1)User 使用者 (2)Group 群组 (3)M ...
- Druid出现DruidDataSource - recyle error - recyle error java.lang.InterruptedException: null异常排查与解决
一.问题回顾 线上的代码之前运行的都很平稳,突然就出现了一个很奇怪的问题,看错误信息是第三方框架Druid报出来了,连接池回收连接时出现的问题. 2018-05-14 20:01:32.810 ERR ...