在数据库应用开发中,经常会需要到Excel中的数据直接导入到SQL数据库中;另外为了方便对数据库中的数据进行打印。有时候需要导出数据库中的数据到Excel中,借助Excel自身的打印功能进行报表打印。
窗体控件:4个Button,1个DataGridView,1个对话框OpenFileDialog
1、导入文件功能
添加对话框控件选中要导入的Excel文件
/// <summary>
/// 导入文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tsbInput_Click(object sender, EventArgs e)
{
string fileName = "";
//选中导入的文件
try
{
//openFileDialog1.Filter = "Excel 文件|*.xls";//指定存放文件格式类型
openFileDialog1.ShowDialog();
fileName = openFileDialog1.FileName.ToString();
}catch(Exception ee)
{
MessageBox.Show("打开文件出错!"+ee.Message.ToString());
}
try
{
if (fileName != "")
{
DuoGonNen d = new dataset();
DataSet ds = d.ds(fileName);//导入文件存放到数据集
dt = ds.Tables[0];
this.dataGridView.DataSource = ds.Tables[0];
tsbStave.Enabled = true;
}
}
catch (Exception me)
{
MessageBox.Show("导入文件出错或无选择文件导入");
}
}
2、导入文件后保存在数据库中
知识点一:if not exists (select * from sysobjects where id = object_id(‘ShiYan’)) 判断是否存在此表
DataTable dt;
/// <summary>
/// 保存数据库
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tsbStave_Click(object sender, EventArgs e)
{
string strcon = "server = PC-20161129KNFV\\SQLCSHARP;uid = sa;pwd = 123456;database = DaoRu_DaoChu";
SqlConnection con = new SqlConnection(strcon);
SqlCommand com = con.CreateCommand();
con.Open();
try
{
/*创建表*/
//数据库总查询不到创建新表
Random ran = new Random();
int r = ran.Next(9999999);
//为了导入的表名不被重复才有随机数创建数据库表名
com.CommandText = "if not exists (select * from sysobjects where id = object_id('ShiYan')) create table ShiYan"+r.ToString()+"( ";
for (int i = 0; i < dt.Columns.Count;i++)
{
com.CommandText += dt.Columns[i].ColumnName + " " + "nvarchar(max),";
}
com.CommandText += ")";
com.ExecuteNonQuery();
/*存储数据*/