谁有把csv文件读区到DataTable了的代码~ 谁有把csv文件读区到DataTable了的代码~麻烦发个,网上查的试了都不好用~哪位有的麻烦发下~~谢谢. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CSV,写,容易~~~~~~读,难!!!!!!!!如果是固定格式的话,贴一段文档的内容,这会有许多人给你写出读取代码如果格式不固定,借助于OLEDB或ODBC吧 导出 string sqlstr = "select * from VW_USERINfoOneTwo"; SqlConnection Conn = new SqlConnection(ConnectionString); SqlCommand Comm = new SqlCommand(sqlstr, Conn); SqlDataAdapter SqlDA = new SqlDataAdapter(Comm); DataSet ds = new DataSet(); SqlDA.Fill(ds); //Comm.ex // DataTable dt = ds.Tables; DataTable dt = ds.Tables[0]; dt.DataSet.DataSetName = ds.ToString(); HttpContext.Current.Response.Clear(); System.IO.StringWriter sw = new System.IO.StringWriter(); int iColCount = dt.Columns.Count; for (int i = 0; i < iColCount; i++) { sw.Write("\"'" + dt.Columns[i] + "\""); if (i < iColCount - 1) { sw.Write(","); } } sw.Write(sw.NewLine); foreach (DataRow dr in dt.Rows) { for (int i = 0; i < iColCount; i++) { if (!Convert.IsDBNull(dr[i])) sw.Write("\"'" + dr[i].ToString() + "\""); else sw.Write("\"\""); if (i < iColCount - 1) { sw.Write(","); } } sw.Write(sw.NewLine); } sw.Close(); HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=ss.csv"); HttpContext.Current.Response.ContentType = "application/vnd.ms-excel"; HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); HttpContext.Current.Response.Write(sw); HttpContext.Current.Response.End();我正在使用《Csdn收音机》第一时间获取最新动态! 对不起啊,我测试一下CSDN收音机,前面发的内容别在意哦我正在使用《Csdn收音机》第一时间获取最新动态! // C# 读写CSV文件到DataTablepublic interface ICSVWriterReader {//define a interface string CSVFile { get; set; } //csv file DataTable Read();//read csv to DataTable. bool Write(DataTable dt); //convert datatable to csv } public class CSVHelper:ICSVWriterReader { private string _csvFile; public CSVHelper(string csvFile) { this._csvFile = csvFile; } #region ICSVWriterReader Members public string CSVFile { get{ return _csvFile; } set{ _csvFile=value ;} } public DataTable Read() { FileInfo fi = new FileInfo(this._csvFile); if (fi == null || !fi.Exists) return null; StreamReader reader = new StreamReader(this._csvFile); string line = string.Empty; int lineNumber = 0; DataTable dt = new DataTable(); while ((line = reader.ReadLine()) != null) { if (lineNumber == 0) {//Create Tole dt = CreateDataTable(line); if (dt.Columns.Count == 0) return null; } else { bool isSuccess = CreateDataRow(ref dt, line); if (!isSuccess) return null; } lineNumber++; } return dt; } public bool Write(DataTable dt) { FileInfo fi = new FileInfo(this._csvFile); if (fi == null || !fi.Exists) return false; if (dt == null || dt.Columns.Count == 0 || dt.Rows.Count == 0) return false; StreamWriter writer = new StreamWriter(this._csvFile); //writer.AutoFlush = true; string line = string.Empty; line = CreateTitle(dt); writer.WriteLine(line); foreach (DataRow dr in dt.Rows) { line = CretreLine(dr); writer.WriteLine(line); } writer.Flush(); return true; } private DataTable CreateDataTable(string line) { DataTable dt = new DataTable(); foreach (string field in line.Split(FormatSplit, StringSplitOptions.None)) { dt.Columns.Add(field); } return dt; } private bool CreateDataRow(ref DataTable dt, string line) { DataRow dr = dt.NewRow(); string[] fileds=line.Split(FormatSplit, StringSplitOptions.None); if (fileds.Length == 0 || fileds.Length != dt.Columns.Count) return false; for (int i = 0; i < fileds.Length; i++) { dr[i] = fileds[i]; } dt.Rows.Add(dr); return true; } private char[] FormatSplit { get { return new char[] { ',' }; } } private string CreateTitle(DataTable dt) { string line = string.Empty; for (int i = 0; i < dt.Columns.Count; i++) { line += string.Format("{0}{1}", dt.Columns[i].ColumnName,FormatSplit[0].ToString()); } line.TrimEnd(FormatSplit[0]); return line; } private string CretreLine(DataRow dr) { string line = string.Empty; for (int i = 0; i < dr.ItemArray.Length;i++) { line += string.Format("{0}{1}", dr[i], FormatSplit[0].ToString()); } line.TrimEnd(FormatSplit[0]); return line; } #endregion } } string csvPath = textBox1.Text; string fileFullName = Path.GetFileName(csvPath); string folderPath = csvPath.Substring(0, csvPath.LastIndexOf('\\') + 1); string connStr = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='text;HDR=Yes;IMEX=1'", folderPath); string sql = string.Format(@"SELECT * FROM [{0}]", fileFullName); OleDbDataAdapter da = new OleDbDataAdapter(sql, connStr); da.Fill(ds)用了个openfile控件来选择csv 这个是openfile选择文件按钮private void button1_Click(object sender, EventArgs e) { openFileDialog1.InitialDirectory = System.Windows.Forms.Application.ExecutablePath; openFileDialog1.Filter = "excel Files(*.csv)|*.csv|All Files(*.*)|*.*"; if (openFileDialog1.ShowDialog() == DialogResult.OK) { this.textBox1.Text = openFileDialog1.FileName; } } 【*在线等*】DateTimePicker 出现了死循环问题 如何在类库中使用MSCOM控件 richtextbox 垂直滚动条问题 听说 nhibernate在处理大数据量时会出问题,是吗? 从进程得到所有线程实例 DataGrid 如何实现这种操作? 有关模板列的问题,肯请大家帮忙 socket编程 动态Thread如何关闭 层与层方法调用时,请问怎样进行跟踪调试? C#调用datamatrix打印机来打印二维码标签 发布程序后第三方的皮肤不起作用 c# 类型能重命名?
string sqlstr = "select * from VW_USERINfoOneTwo";
SqlConnection Conn = new SqlConnection(ConnectionString);
SqlCommand Comm = new SqlCommand(sqlstr, Conn);
SqlDataAdapter SqlDA = new SqlDataAdapter(Comm);
DataSet ds = new DataSet();
SqlDA.Fill(ds);
//Comm.ex
// DataTable dt = ds.Tables;
DataTable dt = ds.Tables[0];
dt.DataSet.DataSetName = ds.ToString();
HttpContext.Current.Response.Clear();
System.IO.StringWriter sw = new System.IO.StringWriter();
int iColCount = dt.Columns.Count;
for (int i = 0; i < iColCount; i++)
{
sw.Write("\"'" + dt.Columns[i] + "\"");
if (i < iColCount - 1)
{
sw.Write(",");
}
}
sw.Write(sw.NewLine);
foreach (DataRow dr in dt.Rows)
{
for (int i = 0; i < iColCount; i++)
{
if (!Convert.IsDBNull(dr[i]))
sw.Write("\"'" + dr[i].ToString() + "\"");
else
sw.Write("\"\"");
if (i < iColCount - 1)
{
sw.Write(",");
}
}
sw.Write(sw.NewLine);
}
sw.Close();
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=ss.csv");
HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
HttpContext.Current.Response.Write(sw);
HttpContext.Current.Response.End();我正在使用《Csdn收音机》第一时间获取最新动态!
// C# 读写CSV文件到DataTable
public interface ICSVWriterReader
{//define a interface
string CSVFile { get; set; } //csv file
DataTable Read();//read csv to DataTable.
bool Write(DataTable dt); //convert datatable to csv
} public class CSVHelper:ICSVWriterReader
{
private string _csvFile;
public CSVHelper(string csvFile)
{
this._csvFile = csvFile;
}
#region ICSVWriterReader Members
public string CSVFile
{
get{ return _csvFile; }
set{ _csvFile=value ;}
}
public DataTable Read()
{
FileInfo fi = new FileInfo(this._csvFile);
if (fi == null || !fi.Exists) return null;
StreamReader reader = new StreamReader(this._csvFile);
string line = string.Empty; int lineNumber = 0;
DataTable dt = new DataTable();
while ((line = reader.ReadLine()) != null)
{
if (lineNumber == 0)
{//Create Tole
dt = CreateDataTable(line);
if (dt.Columns.Count == 0) return null;
}
else
{
bool isSuccess = CreateDataRow(ref dt, line);
if (!isSuccess) return null;
}
lineNumber++;
}
return dt;
}
public bool Write(DataTable dt)
{
FileInfo fi = new FileInfo(this._csvFile);
if (fi == null || !fi.Exists) return false;
if (dt == null || dt.Columns.Count == 0 || dt.Rows.Count == 0) return false;
StreamWriter writer = new StreamWriter(this._csvFile);
//writer.AutoFlush = true;
string line = string.Empty;
line = CreateTitle(dt);
writer.WriteLine(line);
foreach (DataRow dr in dt.Rows)
{
line = CretreLine(dr);
writer.WriteLine(line);
}
writer.Flush();
return true;
}
private DataTable CreateDataTable(string line)
{
DataTable dt = new DataTable();
foreach (string field in
line.Split(FormatSplit, StringSplitOptions.None))
{
dt.Columns.Add(field);
}
return dt;
}
private bool CreateDataRow(ref DataTable dt, string line)
{
DataRow dr = dt.NewRow();
string[] fileds=line.Split(FormatSplit, StringSplitOptions.None);
if (fileds.Length == 0 || fileds.Length != dt.Columns.Count) return false;
for (int i = 0; i < fileds.Length; i++)
{
dr[i] = fileds[i];
}
dt.Rows.Add(dr);
return true;
}
private char[] FormatSplit
{
get { return new char[] { ',' }; }
}
private string CreateTitle(DataTable dt)
{
string line = string.Empty;
for (int i = 0; i < dt.Columns.Count; i++)
{
line += string.Format("{0}{1}", dt.Columns[i].ColumnName,FormatSplit[0].ToString());
}
line.TrimEnd(FormatSplit[0]);
return line;
}
private string CretreLine(DataRow dr)
{
string line = string.Empty;
for (int i = 0; i < dr.ItemArray.Length;i++)
{
line += string.Format("{0}{1}", dr[i], FormatSplit[0].ToString());
}
line.TrimEnd(FormatSplit[0]);
return line;
}
#endregion
}
}
string fileFullName = Path.GetFileName(csvPath);
string folderPath = csvPath.Substring(0, csvPath.LastIndexOf('\\') + 1); string connStr = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='text;HDR=Yes;IMEX=1'", folderPath);
string sql = string.Format(@"SELECT * FROM [{0}]", fileFullName);
OleDbDataAdapter da = new OleDbDataAdapter(sql, connStr);
da.Fill(ds)
用了个openfile控件来选择csv
private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.InitialDirectory = System.Windows.Forms.Application.ExecutablePath;
openFileDialog1.Filter = "excel Files(*.csv)|*.csv|All Files(*.*)|*.*";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
this.textBox1.Text = openFileDialog1.FileName;
}
}