一、NPOI控件
NPOI,顾名思义,就是POI的.NET版本。那POI又是什么呢?POI是一套用Java写成的库,能够帮助开发者在没有安装微软Office的情况下读写Office 97-2003的文件,支持的文件格式包括xls, doc, ppt等。
笔者以上所用的npoi版本为1.2.5版本(部分自定义修改了),对于具体npoi相关资料可以从网上查找获得。
对于从Sqlserver中的数据导入到Excel中,虽然Sqlserver已经给了较为简单的方式,通过交互式的对话框形式来实现;但是,有时这种方式对于一个项目而言,并不便利,而且我们都不希望功能的实现离开了软件程序。因此,在此给大家介绍一种C#调用NPOI进行Excel导出的代码实现方式。
二、工具/原料
- VS2010
- Sqlserver
三、方法/步骤
1、构建查询界面UI
使用VS2010建构查询界面,在此笔者所测试的是Winform程序,一个往来账查询的功能,具体界面如下图所示:
2、利用C#代码获取SQL数据
利用C#代码获取SQL数据,并将查询出来的数据保存到数据表DataTable中;部分查询代码如下:
private void btnRefresh_Click(object sender, EventArgs e)
{
//search string
condition = "";
condition = condition + " [px_rq]>='" + dateTimePicker1.Value.ToShortDateString() + "' AND [px_rq]<='" + dateTimePicker2.Value.ToShortDateString() + "' ";
if (txtKjkm.Text != "")
condition = condition + "AND [kmdm] like '" + SearchKmdm + "%' ";
if (txtXmmc.Text != "")
condition = condition + "AND [xmdm] like '" + txtXmmc.Text.Trim() + "%' ";
//……
VouchOp dzd = new VouchOp();
dt = dzd.oneYearVouch(condition, conditionQc);
}
3、设定dataGridView的数据源
将所查询出来的DataTable数据表设定为dataGridView的数据源:
dataGridView1.DataSource = dt;
4、调用NPOI将数据导入到Excel中
调用NPOI控件,并将数据导入到Excel中:
private void btnExcel_Click(object sender, EventArgs e)
{
NPOIExcel.GenerateXlsFromXlsTemplate(dataGridView1);
}
5、指定文件存储路径
点击生成EXCEL,跳出存储对话框(如下图),接下来我们做的就是先找到存放这个文件的路径,代码如下:
static void WriteToFile()
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Execl files (*.xls)|*.xls";
saveFileDialog.FilterIndex = 0;
saveFileDialog.RestoreDirectory = true;
saveFileDialog.CreatePrompt = true;
saveFileDialog.Title = "Excel文件另存为…";
// saveFileDialog.ShowDialog();
if (saveFileDialog.ShowDialog() != DialogResult.OK)
return;
string myExcel = saveFileDialog.FileName;
FileStream file = new FileStream(myExcel, FileMode.Create);
hssfworkbook.Write(file);
file.Close();
}
这段代码,意思是看是否存在文件夹,如果存在,则查看是否存在文件,如果不存在文件夹或者文件,都将进行创建。
打开所存储的EXCEL文件,即是从SQL数据中导入的内容,如下图所示:
https://jingyan.baidu.com/article/574c521979c4be6c8d9dc197.html