TXT 与 DataTable 互转
//*********************************************************************************************
public static DataTable TXT_To_DataTable(string dirTXT)
{
StreamReader objReader = new StreamReader(dirTXT, Encoding.Default);
DataTable dt = new DataTable();
string strline;
string[] aryline;
bool blnFlag = false;
while ((strline = objReader.ReadLine()) != null)
{
aryline = strline.Split(new char[] { '\t' }, StringSplitOptions.None);
if (blnFlag == false)
{
DataColumn mydc = null;
foreach (string str in aryline)
{
mydc = new DataColumn(str);
dt.Columns.Add(mydc);
}
blnFlag = true;
}
else
{
dt.Rows.Add(aryline);
}
} objReader.Close();
return dt;
}
/// <summary>
/// 以Tab键为间隔,以Tab键表示空值
/// </summary>
/// <param name="dirTXT"></param>
/// <returns></returns>
public static DataTable TXT_To_DataTable2(string dirTXT)
{
StreamReader objReader = new StreamReader(dirTXT, Encoding.Default);
DataTable dt = new DataTable();
string strline;
string[] aryline;
bool blnFlag = false;
while ((strline = objReader.ReadLine()) != null)
{
aryline = strline.Split(new char[] { '\t' }, StringSplitOptions.None);
if (blnFlag == false)
{
foreach (string str in aryline)
{
if (!string.IsNullOrEmpty(str))
{
DataColumn mydc = new DataColumn(str);
dt.Columns.Add(mydc);
}
}
blnFlag = true;
}
else
{
if (aryline.Count() != dt.Columns.Count)
{
strline = Lines_To_Replace(strline);
aryline = strline.Split(new char[] { '\t' }, StringSplitOptions.None);
}
dt.Rows.Add(aryline);
}
}
objReader.Close();
return dt;
}
public static string Lines_To_Replace(string lines)
{
for (int i = ; i < lines.Length; i++)
{
if (i != lines.Length - &&
i > &&
lines.Substring(i - , ) == "\t" &&
lines.Substring(i, ) == "\t" &&
lines.Substring(i + , ) == "\t")
{
//lines.Substring(i, 1) = "\0";
lines = lines.Substring(, i) + "\0" + lines.Substring(i + , lines.Length - i - );
}
}
return lines;
}
/// <summary>
/// 以空格键为间隔,没有空值
/// </summary>
/// <param name="dirTXT"></param>
/// <returns></returns>
public static DataTable TXT_To_DataTable3(string dirTXT)
{
StreamReader objReader = new StreamReader(dirTXT, Encoding.Default);
DataTable dt = new DataTable();
string strline;
bool OK = false;
while ((strline = objReader.ReadLine()) != null)
{
List<string> list = new List<string>();
string tmp = "";
while (strline.Contains(" "))
{
tmp = strline.Substring(, strline.IndexOf(" "));
strline = strline.Substring(strline.IndexOf(" ") + , strline.Length - strline.IndexOf(" ") - ).Trim();
if (!string.IsNullOrEmpty(tmp))
list.Add(tmp);
}
if (!string.IsNullOrEmpty(strline))
list.Add(strline);
if (!OK)
{
foreach (string str in list)
{
if (!string.IsNullOrEmpty(str))
{
DataColumn mydc = new DataColumn(str);
dt.Columns.Add(mydc);
}
}
OK = true;
}
else
dt.Rows.Add(list.ToArray());
}
objReader.Close();
return dt;
} /// <summary>
/// DataTable导出到TXT 以Tab为分隔符,以Tab表示空值
/// </summary>
/// <param name="table"></param>
/// <param name="fullName"></param>
/// <param name="Msg"></param>
/// <returns></returns>
public static bool DataTable_To_TXT2(DataTable table, string fullName, ref string Msg)
{
PathHelper.Check_Directory(fullName);
if (table == null || table.Rows.Count == )
{
Msg += fullName + " 对应的 DataTable 没有数据";
return false;
} FileStream fileStream = new FileStream(fullName, FileMode.Create);
StreamWriter streamWriter = new StreamWriter(fileStream, System.Text.Encoding.UTF8);
StringBuilder strBuilder = new StringBuilder(); for (int j = ; j < table.Columns.Count; j++)
{
string str1 = table.Columns[j].Caption; if (j == table.Columns.Count - )
{
strBuilder.AppendLine(str1);
}
else
{
str1 += "\t";
strBuilder.Append(str1);
}
} for (int i = ; i < table.Rows.Count - ; i++)
{
for (int j = ; j < table.Columns.Count; j++)
{
string str1 = table.Rows[i][j].NullableToString(); if (string.IsNullOrEmpty(str1) || str1 == "\0")
str1 = "\t"; if (j == table.Columns.Count - )
{
strBuilder.AppendLine(str1);
}
else
{
str1 += "\t";
strBuilder.Append(str1);
}
}
} streamWriter.WriteLine(strBuilder.ToString());
streamWriter.Close();
fileStream.Close();
return true;
}
public static bool DataTable_To_TXT(DataTable table, string fullName, ref string Msg)
{
PathHelper.Check_Directory(fullName);
if (table == null || table.Rows.Count == )
{
Msg += fullName + " 对应的 DataTable 没有数据";
return false;
}
int[] iColumnLength = new int[table.Columns.Count];
FileStream fileStream = new FileStream(fullName, FileMode.Create);
StreamWriter streamWriter = new StreamWriter(fileStream, System.Text.Encoding.Unicode);
StringBuilder strBuilder = new StringBuilder(); for (int i = ; i < table.Columns.Count; i++)
{
int iLength = ;
for (int j = ; j < table.Rows.Count; j++)
{
if (iLength < (table.Rows[j][i].ToString()).Length)
{
iLength = (table.Rows[j][i].ToString()).Length;
if ((table.Rows[j][i].ToString()).Length < table.Columns[i].Caption.Length)
{
iLength = table.Columns[i].Caption.Length;
}
} }
iColumnLength[i] = iLength + ;
} for (int j = ; j < table.Columns.Count; j++)
{
string str1 = table.Columns[j].Caption;
int iLength = str1.Length;
int iColumnWidth = iColumnLength[j] + ; for (int k = iLength; k < iColumnWidth; k++)
{
str1 += " ";
} if (j == table.Columns.Count - )
{
strBuilder.AppendLine(str1);
}
else
{
strBuilder.Append(str1);
}
} for (int i = ; i < table.Rows.Count - ; i++)
{
for (int j = ; j < table.Columns.Count; j++)
{
string str1 = table.Rows[i][j].NullableToString();
if (string.IsNullOrEmpty(str1))
str1 = "\0";
int iLength = str1.Length;
int iColumnWidth = iColumnLength[j] + ; for (int k = iLength; k < iColumnWidth; k++)
{
str1 += " ";
}
if (j == table.Columns.Count - )
{
strBuilder.AppendLine(str1);
}
else
{
strBuilder.Append(str1);
}
}
} streamWriter.WriteLine(strBuilder.ToString());
streamWriter.Close();
fileStream.Close();
return true;
}
//****************************************************************************************
TXT 与 DataTable 互转的更多相关文章
- List和DataTable互转
/// <summary> /// List和DataTable互转 /// </summary> static class ListUtility { /// <sum ...
- json datatable互转(真正能用的-原创)
网上有不少的转换类 可是不全 或者有错误 我现在贴一个 js 和C# 互转代码 希望能帮到需要的童鞋 首先C#转成 json /// <summary> /// DataT ...
- C#实现XML与DataTable互转
private string ConvertDataTableToXML(DataTable xmlDS) { MemoryStream stream = null; XmlTextWriter wr ...
- 集合List与DataTable互转
/// <summary> /// 将泛类型集合List类转换成DataTable /// </summary> /// <param name="list&q ...
- C#读取txt文件返回DATATABLE
//1.打开资源管理器 OpenFileDialog open = new OpenFileDialog(); if (open.ShowDialog() == DialogResult.OK) { ...
- DataTable,List,Dictonary互转,筛选及相关写法
1.创建自定义DataTable /// 创建自定义DataTable(一) 根据列名字符串数组, /// </summary> /// <param name="sLi ...
- List实体类、DataTable与xml互转
序列化常用Attribute讲解说明 [XmlRootAttribute("MyCity", Namespace="abc.abc", IsNullable=f ...
- C#调用NPOI组件读取excel表格数据转为datatable写入word表格中并向word中插入图片/文字/书签 获得书签列表
调用word的com组件将400条数据导入word表格中耗时10分钟简直不能忍受,使用NPOI组件耗时4秒钟.但是NPOI中替换书签内容的功能不知道是不支持还是没找到. 辅助类 Excel表格数据与D ...
- DateTable与List<T>相互转换 及JSON与DataTable(DataSet)相互转化
http://www.360doc.com/content/13/0712/09/10504424_299336674.shtml Linq处理List数据 http://blog.163.com/l ...
随机推荐
- mac系统在配置navicat时连接数据的时候提示can't connect to mysql server on '127.0.0.1'
新建数据库连接的时候,将默认的端口号更改掉,改为3307,即可解决这个问题. 具体是为什么我也不清楚,我自己想的一个可能就是mac电脑 上的某个程序可能已经占用了3306那个默认的端口,因 ...
- 【BARTS计划】【Tips_Week1】20190331更新
BARTS计划 · Review :每周学习至少一个技术技巧. 一.快捷键 1. 快速批量注释代码的方法:选中需要注释的代码,按 ctrl+/ 二.重要命令行命令 1. 新增文件:git add a. ...
- sql 查询名字中有_的员工
select * from emp where ename like '%\_%' escape '\' ;\可以换作任意的字符 select * from emp where ename like ...
- 使用Groovy的mixin方法注入,和mixedIn属性实现过滤链
mixin方法注入不多说,这里只是用这个属性搞一个过滤器链的功能 假设我现在有个方法,输入一个字符串,然后需求提出需要进行大写转换输出, 过了一天又要加个前缀,再过了一天,需要把一些字符过滤掉.... ...
- 如何用ModelsimSE仿真IP核-以PLL为例
我们之前介绍了如何使用Modelsim SE进行仿真和利用do文件的仿真方法,但是其中待仿真的模块是我们自己编写的Verilog模块,但是在实际工作中,我们的设计中会经常用到FPGA厂商给我们提供的现 ...
- [转]AMBA、AHB、APB、ASB总线简介
[转]http://www.cnblogs.com/zhaozhong1989/articles/3092140.html 1.前言 随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大.数字IC ...
- python的技巧和方法你了解多少?
学了这些你的python代码将会改善与你的技巧将会提高. 1. 路径操作 比起os模块的path方法,python3标准库的pathlib模块的Path处理起路径更加的容易. 获取当前文件路径 前提导 ...
- tomcat配置文件context.xml和server.xml分析
在tomcat 5.5之前Context体现在/conf/server.xml中的Host里的<Context>元素,它由Context接口定义.每个<Context元素代表了运行在 ...
- oracle instantclient_11_2 配置文件tnsnames.ora
文件所在位置(不同版本位置可能不同): oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora WDDB = (DESCRIPTION = ...
- Cookie/Session机制详解(转载)
原文链接:http://blog.csdn.net/fangaoxin/article/details/6952954 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用 ...