我刚开始学习C#,我有这个问题...... 如何将文本从Excel源文件转换为DataGridView中的列?
来源格式:
NO BRAND NAME,ADRESS,PHONE
1 Brand1 Name1,adress1,phone1
2 Brand2 Name2,adress1,phone2
3 Brand1 Name3,adress3,phone3
4 Brand3 Name4,adress4,phone4
5 Brand1 Name5,adress5,phone5
6 Brand1 Name6,adress6,phone6
7 Brand4 Name7,adress7,phone7
8 Brand2 Name8,adress8,phone8
9 Brand4 Name9,adress9,phone9
10 Brand2 Name10,adress10,phone10
Excel来源: https://www.easypaste.org/file/dmqoMGDW/export-sources.xls?lang=en
我希望导入后的表格如下所示: enter image description here
谢谢所有帮助我......
这是我的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ExceltoDGV
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
OpenFileDialog openfile1 = new OpenFileDialog();
if (openfile1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
this.textBox1.Text = openfile1.FileName;
string pathconn = "Provider = Microsoft.jet.OLEDB.4.0; Data source=" + textBox1.Text + ";Extended Properties=\"Excel 8.0;HDR= yes;\";";
OleDbConnection conn = new OleDbConnection(pathconn);
OleDbDataAdapter MyDataAdapter = new OleDbDataAdapter("Select * from [Inwestycje$]", conn);
DataTable dt = new DataTable();
MyDataAdapter.Fill(dt);
dataGridView1.DataSource = dt;
}
}
catch
{
}
}
}
}
答案 0 :(得分:0)
我使用这种方法将我的csv转换为数据集。试试这个:
private DataTable GetDataFromSource(string connectionstring)
{
DataTable DtCsv = new DataTable();
string Fulltext;
using (StreamReader sr = new StreamReader(connectionstring))
{
while (!sr.EndOfStream)
{
Fulltext = sr.ReadToEnd().ToString(); //read full file text
string[] rows = Fulltext.Split('\n'); //split full file text into rows
for (int i = 0; i < rows.Count() - 1; i++)
{
string[] rowValues = rows[i].Split(','); //split each row with comma to get individual values
{
if (i == 0)
{
for (int j = 0; j < rowValues.Count(); j++)
{
DtCsv.Columns.Add(rowValues[j]); //add headers
}
}
else
{
DataRow dr = DtCsv.NewRow();
for (int k = 0; k < rowValues.Count(); k++)
{
dr[k] = rowValues[k].ToString();
}
DtCsv.Rows.Add(dr); //add other rows
}
}
}
}
}
return DtCsv;
}