读取CSV到DataTable
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SanJuSFTP
{
public class Common
{
public static DataTable CsvToDt(string path)
{
OleDbConnection OleCon = new OleDbConnection();
try
{
DataSet dsCsvData = new DataSet();
OleDbCommand OleCmd = new OleDbCommand();
OleDbDataAdapter OleDa = new OleDbDataAdapter();
OleCon.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path.Substring(0, path.LastIndexOf("\\")) + ";Extended Properties='Text;FMT=Delimited(,);HDR=YES;IMEX=1';";
OleCon.Open();
OleCmd.Connection = OleCon;
OleCmd.CommandText = "select * from [" + path.Substring(path.LastIndexOf("\\") + 1) + "] where 1=1";
OleDa.SelectCommand = OleCmd;
OleDa.Fill(dsCsvData, "Csv");
return dsCsvData.Tables[0];
}
catch (Exception ex)
{
LogHelper.WriteLog(ex.Message);
return null;
}
finally
{
OleCon.Close();
}
}
/// <summary>
/// datatable转csv
/// </summary>
/// <param name="dt"></param>
/// <param name="fileName"></param>
public static void DtToCsv(DataTable dt, string fileName)
{
FileStream fs = new FileStream(fileName, System.IO.FileMode.Create, System.IO.FileAccess.Write);
StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default);
try
{
string data = "";
//写出列名称
for (int i = 0; i < dt.Columns.Count; i++)
{
data += dt.Columns[i].ColumnName.ToString();
if (i < dt.Columns.Count - 1)
{
data += ",";
}
}
sw.WriteLine(data);
//写出各行数据
for (int i = 0; i < dt.Rows.Count; i++)
{
data = "";
for (int j = 0; j < dt.Columns.Count; j++)
{
data += "" + dt.Rows[i][j].ToString();
if (j < dt.Columns.Count - 1)
{
data += ",";
}
}
sw.WriteLine(data);
}
}
catch (Exception ex)
{
}
finally
{
sw.Close();
fs.Close();
}
}
/// <summary>
/// 新文件名
/// </summary>
/// <param name="oldFilePath">文件路径</param>
/// <param name="oldFileName">文件名称</param>
/// <returns></returns>
public static string GetNewFilePath(string oldFilePath, string oldFileName)
{
string newFilePath = oldFilePath + oldFileName.Substring(0, oldFileName.IndexOf("."))
+ DateTime.UtcNow.ToString("yyyyMMdd") +
oldFileName.Substring(oldFileName.IndexOf("."));
return newFilePath;
}
/// <summary>
/// 修改本地文件名
/// </summary>
/// <param name="oldStr">旧文件名</param>
/// <param name="newStr">新文件名</param>
public static void Rename_Local(string oldStr, string newStr)
{
// 改名方法
FileInfo fi = new FileInfo(oldStr);
FileInfo fi_new = new FileInfo(newStr);
if (fi_new.Exists)
{
fi_new.Delete();
}
fi.MoveTo(Path.Combine(newStr));
}
}
}
读取CSV到DataTable的更多相关文章
- C#:StreamReader读取.CSV文件(转换成DataTable)
using System.Data; using System.IO; /// <summary> /// Stream读取.csv文件 /// </summary> /// ...
- C# 读取 CSV 文件
最近做一个C#项目要导入CSV文件中的数据到Oracle中,使用Aspose.Cells读取中文字段标题却乱码,表的最后多出几行null记录,而且不是免费的,后来找到了NPOI,顾名思义,就是POI的 ...
- c# winForm使用Aspose.Cells读取CSV文件中文乱码问题
不废话直接上代码 主要注意是 红色代码部分 Aspose.Cells.TxtLoadOptions lo = new TxtLoadOptions(); lo ...
- C#运用实例.读取csv里面的词条,对每一个词条抓取百度百科相关资料,然后存取到数据库
第一步:首先需要将csv先装换成datatable,这样我们就容易进行对datatable进行遍历: /// 将CSV文件的数据读取到DataTable中 /// CSV文件路径 /// 返回读取了C ...
- EpPlus读取生成Excel帮助类+读取csv帮助类+Aspose.Cells生成Excel帮助类
大部分功能逻辑都在,少量自定义异常类和扩展方法 ,可用类似代码自己替换 //EpPlus读取生成Excel帮助类+读取csv帮助类,epplus只支持开放的Excel文件格式:xlsx,不支持 xls ...
- asp.net读取CSV
原文:asp.net读取CSV 用Excel导了两天数据,各种问题,折磨客户也折磨了自己,以前没发现的问题一下子都暴露出来了 特意收集两篇Excel跟CSV读取相关的两篇文章 asp.net读取exc ...
- C#读取CSV
public class CSVFileHelper { /// <summary> /// 将DataTable中数据写入到CSV文件中 /// </summary> /// ...
- C# 读取CSV和EXCEL文件示例
我们习惯了直接连到数据库上面读取数据表的数据内容: 如果有一天我们需要读取CSV,EXCEL文件的内容的时候,可不可以也像读数据表的方式一样呢?当然可以,使用OleDB ADO.NET是很简单的事情 ...
- C#完美读取CSV
/// <summary> /// 将DataTable中数据写入到CSV文件中 /// </summary> /// < ...
随机推荐
- .NET-记一次架构优化实战与方案-前端优化
目录 .NET-记一次架构优化实战与方案-梳理篇 .NET-记一次架构优化实战与方案-前端优化 .NET-记一次架构优化实战与方案-底层服务优化 前言 上一篇<.NET-记一次架构优化实战与方案 ...
- 渗透测试_利用Burp爆破用户名与密码
burp 全称 Burp Suite, 是用于攻击web 应用程序的集成平台.它包含了许多工具,可以抓包可以爆破也可以扫描漏洞. 主要组件如下: Proxy——是一个拦截HTTP/S的代理服务器,作为 ...
- Linux进程与线程的区别
进程与线程的区别,早已经成为了经典问题.自线程概念诞生起,关于这个问题的讨论就没有停止过.无论是初级程序员,还是资深专家,都应该考虑过这个问题,只是层次角度不同罢了.一般程序员而言,搞清楚二者的概念, ...
- java得到日期相减的天数
/** * <li>功能描述:时间相减得到天数 * @param beginDateStr * @param endDateStr * @return * long * @author A ...
- vue echarts 动态数据
安装echarts依赖 npm install echarts -S 或者使用国内的淘宝镜像: 安装 npm install -g cnpm --registry=https://registry.n ...
- linux 下mysql服务的管理
一.mysql服务的管理 1.1 mysql启动与关闭 linux下启动mysql: /etc/init.d/mysqld start 关闭进程: ps -ef | grep mysql 找到进程号 ...
- Vue之小入门
Vue之小入门 <div id="app">{{ greeting }}</div> <script> let oDiv = document. ...
- java lang(Comparable接口) 和java util(Comparator接口)分析比较
//Comparable 接口强行对实现它的每个类的对象进行整体排序. -- 自然排序.类的compareTo称为自然比较方法. public interface Comparable<T> ...
- CMake--List用法
list(LENGTH <list><output variable>) list(GET <list> <elementindex> [<ele ...
- mysql 中出现:不能打开到主机的连接,在端口3306: 连接失败
由于某种原因,在服务器部署,然后mysql就连接不上了, navicat查看数据库正常,telnet怎么都不同,总会卡一会儿说遗失主机,最后终于找到解决办法 http://www.51testing. ...