导出数据版本2 ,个人精简了一下方法,并且通过测试,可是点击取消的时候还没弄清楚,亲,等待哈。。。
引用:
//连接数据库 ---全局
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Loginthree"].ToString());
/// <summary>
/// 导出数据按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
//需要打印的数据
string sqlall = "select * from Student";
DataTable dat = testone(sqlall);
printAll(dat);
}
testone()方法:
/// <summary>
/// 获取数据集返回数据库中的数据
/// </summary>
/// <param name="sql"></param>
/// <returns>DataTable</returns>
private DataTable testone(string sqlall)
{
try
{
conn.Open();
dapter = new SqlDataAdapter(sqlall,conn);
//自动生成单表命令,用于将对 DataSet 所做的更改与关联的 SQL Server 数据库的更改相协调。无法继承此类。
SqlCommandBuilder scb = new SqlCommandBuilder(dapter);
ds = new DataSet();
dapter.Fill(ds);// dapter.Fill(ds, "class");//DataTable customerTable = dtc["Product"];
return ds.Tables[0];
}
catch(Exception e)
{
Console.WriteLine("{0} Exception caught.", e);
}
finally
{
conn.Close();
}
return null ;
}
printAll方法:
/// <summary>
/// 导出excel 方法一
/// </summary>
/// <param name="dt"></param>
public void printAll(System.Data.DataTable dt)
{
//导出到execl
//没有数据的话就不往下执行
if (dt.Rows.Count == 0)
return;
//实例化一个Excel.Application对象
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
// Excel.Application excel = new Excel.Application();
//新增加一个工作簿,Workbook是直接保存,不会弹出保存对话框,加上Application会弹出保存对话框,值为false会报错
Microsoft.Office.Interop.Excel.Workbook xls_book = excel.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
excel.Visible = true;
try
{
//让后台执行设置为不可见,为true的话会看到打开一个Excel,然后数据在往里写
excel.Visible = false;
//生成Excel中列头名称
for (int i = 0; i < dt.Columns.Count; i++)
{
excel.Cells[1, i + 1] = dagvtwo.Columns[i].HeaderText;//输出DataGridView列头名
}
//把DataGridView当前页的数据保存在Excel中
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
string str = dt.Rows[i][j].ToString();
excel.Cells[i + 2, j + 1] = "'" + str;
}
}
}
//设置禁止弹出保存和覆盖的询问提示框
excel.DisplayAlerts = false;
excel.AlertBeforeOverwriting = false;
//保存工作簿,值为false会报错
excel.Application.Workbooks.Add(true).Save();
//保存excel文件
excel.Save("D:\\KKHMD.xls");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误提示");
}
finally
{
//确保Excel进程关闭
excel.Quit();
excel = null;
}
}