首先在页面上加入一个BUT按钮,和一个dataGridView。
but呢是用来触发此事件,datagriview是用来显示你所导入的Excel做显示的。
现在进入操作
private void button1_Click(object sender, EventArgs e)
{
OpentExcel();
}
便于大家查看我把方法尽量封装分开
private DataTable dtExcelItems;
private void OpentExcel()
{
try
{
//选择导入文件
OpenFileDialog FBD = new OpenFileDialog();
FBD.Title = "选择待导入文件";
FBD.FileName = "";
if (FBD.ShowDialog() == DialogResult.OK)
{
if (!String.IsNullOrEmpty(FBD.FileName))
{
//调用ExcelHelper类
dtExcelItems = ExcelHelper.OpenExcel(FBD.FileName, true);
if (dtExcelItems == null)
{
MessageBox.Show("打开EXCEL失败,请重试");
return;
}
dataGridView1.DataSource = dtExcelItems;
、
}
else
{
MessageBox.Show("未选择文件。");
}
}
}
catch (Exception ex)
{
MessageBox.Show("选择文件时发生错误," + ex.ToString());
}
}
ExcelHelper类
public class ExcelHelper
{
public static DataTable OpenExcel(string FileName, bool FirstColName)
{
DataTable dt = null;
DataSet myDataSet = new DataSet();
string strConn = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=No;IMEX=1;'", FileName); //No表示第一第就是数据, 为了让所有列都是字符
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
DataTable schemaTable = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
string tableName = schemaTable.Rows[0][2].ToString().Trim();
OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [" + tableName + "]", strConn);
myCommand.Fill(myDataSet);
dt = myDataSet.Tables[0];
//手动将第一行作为列名,并去掉第一行
if (FirstColName && dt.Rows.Count > 0)
{
DataRow dr = dt.Rows[0];
string ColName;
for (int col = 0; col < dt.Columns.Count; col++)
{
ColName = dr[col].ToString();
ColName = ColName.Trim();
if (ColName == "")
{
ColName = "C" + col;
}
dt.Columns[col].ColumnName = ColName;
}
dt.Rows[0].Delete();
dt.AcceptChanges();
}
return dt;
}
}