读取CSV文件数据,得到DataSet
2012-02-06 16:45
537 查看
private bool ReadCsvDataSetEx(string i_fileName, out DataSet o_ds)
{
o_ds = new DataSet();
DataTable dt = new DataTable();
o_ds.Tables.Add(dt);
if (i_fileName == "")
return false;
try
{
string text = File.ReadAllText(i_fileName, Encoding.GetEncoding(932));
if (text == null)
{
return false;
}
List<string[]> text_array = new List<string[]>();
List<string> line = new List<string>();
StringBuilder field = new StringBuilder();
bool in_quata = false;
bool field_start = true;
for (int i = 0; i < text.Length; i++)
{
char ch = text[i];
if (in_quata)
{
if (ch == '\"')
{
if (i < text.Length - 1 && text[i + 1] == '\"')
{
field.Append('\"');
i++;
}
else
in_quata = false;
}
else
{
field.Append(ch);
}
}
else
{
switch (ch)
{
case ',':
line.Add(field.ToString());
field.Remove(0, field.Length);
field_start = true;
break;
case '\"':
if (field_start)
in_quata = true;
else
field.Append(ch);
break;
case '\r':
if (field.Length > 0 || field_start)
{
line.Add(field.ToString());
field.Remove(0, field.Length);
}
text_array.Add(line.ToArray());
line.Clear();
field_start = true;
if (i < text.Length - 1 && text[i + 1] == '\n')
i++;
break;
default:
field_start = false;
field.Append(ch);
break;
}
}
}
if (field.Length > 0 || field_start)
{
line.Add(field.ToString());
}
if (line.Count > 0)
{
text_array.Add(line.ToArray());
}
for (int j = 0; j < text_array[0].Length; j++)
{
DataColumn column = new DataColumn();
column.ColumnName = "C_" + DataUtil.CStr(j);
dt.Columns.Add(column);
}
for (int i = 0; i < text_array.Count; i++)
{
DataRow dr = dt.NewRow();
for (int j = 0; j < text_array[i].Length; j++)
{
dr[j] = text_array[i][j];
}
dt.Rows.Add(dr);
}
return true;
}
catch
{
return false;
}
}
{
o_ds = new DataSet();
DataTable dt = new DataTable();
o_ds.Tables.Add(dt);
if (i_fileName == "")
return false;
try
{
string text = File.ReadAllText(i_fileName, Encoding.GetEncoding(932));
if (text == null)
{
return false;
}
List<string[]> text_array = new List<string[]>();
List<string> line = new List<string>();
StringBuilder field = new StringBuilder();
bool in_quata = false;
bool field_start = true;
for (int i = 0; i < text.Length; i++)
{
char ch = text[i];
if (in_quata)
{
if (ch == '\"')
{
if (i < text.Length - 1 && text[i + 1] == '\"')
{
field.Append('\"');
i++;
}
else
in_quata = false;
}
else
{
field.Append(ch);
}
}
else
{
switch (ch)
{
case ',':
line.Add(field.ToString());
field.Remove(0, field.Length);
field_start = true;
break;
case '\"':
if (field_start)
in_quata = true;
else
field.Append(ch);
break;
case '\r':
if (field.Length > 0 || field_start)
{
line.Add(field.ToString());
field.Remove(0, field.Length);
}
text_array.Add(line.ToArray());
line.Clear();
field_start = true;
if (i < text.Length - 1 && text[i + 1] == '\n')
i++;
break;
default:
field_start = false;
field.Append(ch);
break;
}
}
}
if (field.Length > 0 || field_start)
{
line.Add(field.ToString());
}
if (line.Count > 0)
{
text_array.Add(line.ToArray());
}
for (int j = 0; j < text_array[0].Length; j++)
{
DataColumn column = new DataColumn();
column.ColumnName = "C_" + DataUtil.CStr(j);
dt.Columns.Add(column);
}
for (int i = 0; i < text_array.Count; i++)
{
DataRow dr = dt.NewRow();
for (int j = 0; j < text_array[i].Length; j++)
{
dr[j] = text_array[i][j];
}
dt.Rows.Add(dr);
}
return true;
}
catch
{
return false;
}
}
相关文章推荐
- R—读取数据(导入csv,txt,excel文件)
- C++读取CSV文件中的数据
- java将float数据写入csv 并在python中读取csv文件
- matlab读取csv文件数据
- excel、csv、txt文件数据读取
- java代码实现CSV文件读取、将数据拆分成多个CSV文件及数据导出到CSV文件
- Jmeter 从csv文件中读取参数化数据
- 离线轻量级大数据平台Spark之读取CSV文件实例
- Selenium(Python) ddt读取CSV文件数据驱动
- Oracle 使用PL/SQL 读取CSV文件,将数据拆分到表中丢失数据行
- R语言读CSV、txt文件方式以及read.table read.csv 和readr(大数据读取包)
- 读取csv文件转换成你自己想要格式的数据
- Java从.CSV文件中读取数据和写入
- python的读取csv文件数据
- ean13码的生成,python读取csv中数据并处理返回并写入到另一个csv文件中
- ]C#读取Excel数据,文件中某些数据竟然读到DataSet中却为空?
- JMeter 参数化之利用CSV Data Set Config从文件读取参数并关联变量
- PHP把数组写进csv,和从csv文件以数组的形式读取数据
- Java从.CSV文件中读取数据和写入
- CSV文件中读取数据分割问题