資源簡介
完美解決C#在解析csv時(shí),把字符串當(dāng)做小數(shù)處理問題;
直接使用,傳入絕對(duì)路徑即可
代碼片段和文件信息
using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
using?System.Data;
using?System.IO;
using?System.Text.Regularexpressions;
namespace?_3GAlarm_Test
{
????class?CSVProvider
????{
????????///?
????????///?將CSV數(shù)據(jù)轉(zhuǎn)換為DataTable
????????///?
????????///?csv文件路徑
????????///?是否將第一行作為字段名
????????///?
????????public?static?DataTable?ToDataTable2(string?csvFilePath?bool?isRowHead)
????????{
????????????DataTable?dt?=?null;
????????????if?(File.Exists(csvFilePath))
????????????{
????????????????string?csvstr?=?File.ReadAllText(csvFilePath?Encoding.Default);
????????????????if?(!string.IsNullOrEmpty(csvstr))
????????????????{
????????????????????dt?=?ToDataTable(csvstr?isRowHead);
????????????????}
????????????}
????????????return?dt;
????????}
????????///?
????????///?將CSV數(shù)據(jù)轉(zhuǎn)換為DataTable
????????///?
????????///?包含以““分隔的CSV數(shù)據(jù)的字符串
????????///?是否將第一行作為字段名
????????///?
????????public?static?DataTable?ToDataTable(string?csv?bool?isRowHead)
????????{
????????????DataTable?dt?=?null;
????????????if?(!string.IsNullOrEmpty(csv))
????????????{
????????????????dt?=?new?DataTable();
????????????????string[]?csvRows?=?csv.Split(new?string[]?{?Environment.NewLine?}?StringSplitOptions.RemoveEmptyEntries);
????????????????string[]?csvColumns?=?null;
????????????????if?(csvRows?!=?null)
????????????????{
????????????????????if?(csvRows.Length?>?0)
????????????????????{
????????????????????????//第一行作為字段名添加第一行記錄并刪除csvRows中的第一行數(shù)據(jù)
????????????????????????if?(isRowHead)
????????????????????????{
????????????????????????????csvColumns?=?FromCsvLine(csvRows[0]);
????????????????????????????csvRows[0]?=?null;
????????????????????????????for?(int?i?=?0;?i?????????????????????????????{
????????????????????????????????dt.Columns.Add(csvColumns[i]);
????????????????????????????}
????????????????????????}
????????????????????????for?(int?i?=?0;?i?????????????????????????{
????????????????????????????if?(csvRows[i]?!=?null)
????????????????????????????{
????????????????????????????????csvColumns?=?FromCsvLine(csvRows[i]);
????????????????????????????????//檢查列數(shù)是否足夠不足則補(bǔ)充
????????????????????????????????if?(dt.Columns.Count?????????????????????????????????{
????????????????????????????????????int?columnCount?=?csvColumns.Length?-?dt.Columns.Count;
????????????????????????????????????for?(int?c?=?0;?c?????????????????????????????????????{
????????????????????????????????????????dt.Columns.Add();
????????????????????????????????????}
????????????????????????????????}
????????????????????????????????dt.Rows.Add(csvColumns);
????????????????????????????}
????????????????????????}
???????
評(píng)論
共有 條評(píng)論