数据库在服务器上,不想在服务器上装office,这个时候可以用nopi操作excel,本例先说明一下如何在在不安装Office的情况下将数据导出excel
本例需要导入NPOI.dll和NPOI.OOXML.dll,没有的可以联系我
具体代码:
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System;
using System.Data;
using System.IO;
namespace DT2Excel
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//从数据库中或者其它地方得到数据放入dt中
DataTable dt = GetdataFromDB("select * from users");
//导出EXCEL
string r = DT2Excel("D:\\2.xlsx", mydt, "PP2", true);
}
/// <summary>
/// 将DataTable数据导出到excel中
/// <para>--------------说明------------------</para>
/// <para>string r = DT2Excel("D:\\2.xlsx",(DataTable)dataGridView1.DataSource, "PP2", true);</para>
/// <para>------------------------------------</para>
/// </summary>
/// <param name="_ExcelFileName">Excel路径</param>
/// <param name="_dt">DataTable</param>
/// /// <param name="_SheetName">Sheet名称,默认时写""</param>
/// <param name="_WithDtColumnName">是否导出DataTable的列名到Excel中</param>
/// <returns></returns>
public string DT2Excel(string _ExcelFileName, DataTable _dt, string _SheetName, bool _WithDtColumnName)
{
IWorkbook workbook = null;
FileStream fs = null;
int i = 0;
int j = 0;
int count = 0;
ISheet sheet = null;
fs = new FileStream(_ExcelFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
//if (_ExcelFileName.IndexOf(".xlsx") > 0) // 2007版本
// workbook = new XSSFWorkbook();
//else if (_ExcelFileName.IndexOf(".xls") > 0) // 2003版本
// workbook = new HSSFWorkbook();
workbook = new XSSFWorkbook();
try
{
if (_SheetName == "") { _SheetName = "Sheet1"; }
sheet = workbook.CreateSheet(_SheetName);
if (_WithDtColumnName == true) //写入DataTable的列名
{
IRow row = sheet.CreateRow(0);
for (j = 0; j < _dt.Columns.Count; ++j)
{
row.CreateCell(j).SetCellValue(_dt.Columns[j].ColumnName);
}
count = 1;
}
else
{
count = 0;
}
for (i = 0; i < _dt.Rows.Count; ++i)
{
IRow row = sheet.CreateRow(count);
for (j = 0; j < _dt.Columns.Count; ++j)
{
row.CreateCell(j).SetCellValue(_dt.Rows[i][j].ToString());
}
++count;
}
workbook.Write(fs); //写入到excel
return count.ToString();
}
catch (Exception ex)
{
return ex.ToString();
}
}
}
}
使用方法说明:
//先准备一下数据,从数据库中或者其它地方得到数据放到datatalbe中
DataTable dt = GetdataFromDB("select * from users");
//导出EXCEL
string r = DT2Excel("D:\\2.xlsx", mydt, "PP2", true);
参数
1、导出的excel存放目录,如果是web这里的路径需要你自己处理一下怎么弄合适
2、数据datatable的ID
3、导出的excel的sheet的名称
4、导出的excel第一行是否为datatable的列名