1.Excel的导入问题通常分为四步,第一步:看数据库中是否有相应的数据;第二步:有的话,将数据进行清空;没有的话,直接导入;
第三步:从Excel表格中将数据读出来读在Datatable表中;第四步:将Datatable表中的数据导入数据库;
对于窗体来说一个比较好的读Excel的方法如下,也不会存在版本的问题。
//sql语句读取Excel
public static DataTable ReadExcel(string filePath)
{
try
{
string strConn;
//此连接可以操作.xls与.xlsx文件 (支持Excel2003 和 Excel2007 的连接字符串)
//"HDR=yes;"是说Excel文件的第一行是列名而不是数据,"HDR=No;"正好与前面的相反
//"IMEX=1 "如果列中的数据类型不一致,使用"IMEX=1"可必免数据类型冲突。
strConn = "Provider=Microsoft.Ace.OleDb.12.0;data source=" + filePath + ";Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";
OleDbConnection OleConn = new OleDbConnection(strConn);
OleConn.Open();
String sql = "SELECT * FROM [Sheet1$]";//可是更改Sheet名称,比如sheet2,等等
OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
DataSet OleDsExcle = new DataSet();
OleDaExcel.Fill(OleDsExcle, "Sheet1");
OleConn.Close();
return OleDsExcle.Tables["Sheet1"];
}
catch (Exception err)
{
MessageBox.Show("数据绑定Excel失败!失败原因:" + err.Message, "提示信息",
MessageBoxButtons.OK, MessageBoxIcon.Information);
return null;
}
}
2.对于“下载模板”来说,也可以将其理解为将模板放在客户端(client),进行另存为的问题,这样比较简便。
//下载模板
private void btn_xzmb_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
//设置文件类型
sfd.FileName = "招生计划模板与说明—2017";
sfd.Filter = "xlsx文件(*.xlsx)|*.xlsx|xls文件(*.xls)|*.xls";
string path = System.Windows.Forms.Application.StartupPath + "\\模板\\model.xlsx";
if (!System.IO.File.Exists(path))
{
MessageBox.Show("下载模板失败!");
return;
}
//点了保存按钮进入
if (sfd.ShowDialog() == DialogResult.OK)
{
//获得文件路径
string localFilePath = sfd.FileName.ToString();
if (sfd.FileName == "")
{
MessageBox.Show("请输入文件名!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
else
{
System.IO.File.Copy(path, localFilePath, true);
MessageBox.Show("下载模板成功!");
}
}
}
https://zhidao.baidu.com/question/63918657.html
为操作Excel的方法
http://blog.youkuaiyun.com/g710710/article/details/21166453
解决 C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致
以上都是在做“金融高等专科院校招生系统”的操作。