将数据表转换为string?

与数据表格一起摆脱困境 我想要做的是从Excel文档中取出一个柱子,然后用它来创build一个PDF文件。

这里是我拿出数据并放在Datagrid视图中的代码。

void ExcelOpen() { string PathConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +textBox1.Text+ ";Extended Properties=Excel 12.0;"; OleDbConnection conn = new OleDbConnection(PathConn); OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("SELECT * FROM[" + textBox3.Text + "$"+Kolumn1.Text+":"+Kolumn1.Text+"]", conn); DataTable dt = new DataTable(); myDataAdapter.Fill(dt); dataGridView1.DataSource = dt; // a try to convert the data to an Array. List<String> str = new List<string>(); foreach (DataRow row in dt.Rows) { foreach (DataColumn col in dt.Columns) { stringColumnValue +="" + Convert.ToString(row[col]); } str.Add(stringColumnValue.Trim()); } string.Join(" ", str.ToArray()); } 

使用DataRow的ItemArray属性。 尝试下面的东西。

 foreach (DataRow row in dt.Rows) { var stringArr = dataTable.row.ItemArray.Select(x =>x.ToString()).ToArray(); } 

奖金注意:

下面的查询是开放的SQL注入攻击。 您应该使用参数,而不是在sql语句中的string连接。

 OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("SELECT * FROM[" + textBox3.Text + "$"+Kolumn1.Text+":"+Kolumn1.Text+"]", conn); 

试试这个方法

 List<string> s = dt.AsEnumerable().Select(x => x[0].ToString()).ToList(); foreach(string e in s) Console.WriteLine(e); 

你正在对strColumnValue进行+ =操作,这意味着每当你经过循环时,你不断的添加到这个string中。

然后你添加strColumnValue到str,这是一个string数组。 所以如果你的行是“A”,“B”,“C”,3个循环之后,StrColumnValue将是“ABC”,str将是[“A”,“AB”,“ABC”]

然后你在最后进行连接,但是你不把连接的结果赋给任何variables,这样这个语句没有任何作用。 如果分配它将看起来像“ABAB ABC”

就像有三种不同的方法一起构buildstring一样。

当你从许多较小的string创build一个string时,最有效的方法是StringBuilder。 见下文。

 var sb = new StringBuilder(); foreach (DataRow row in dt.Rows) { foreach (DataColumn col in dt.Columns) { sb.Append(Convert.ToString(row[col]))); sb.Append(" "); } } var fullString = sb.ToString();