Download latest NPOI.dll and add into your project reference.
using NPOI.HSSF.UserModel;
public partial class WebForm1 : System.Web.UI.Page
{
string Connstring = ConfigurationManager.ConnectionStrings["Test"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
GetData();
}
private void GetData()
{
DataSet ds = new DataSet();
string[] tableNames;
using (SqlConnection con = new SqlConnection(Connstring))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "ExcelDownload";
SqlParameter param = new SqlParameter("@tableNames", SqlDbType.VarChar,50);
param.Direction = ParameterDirection.Output;
param.Value = 50;
cmd.Parameters.Add(param);
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
da.Fill(ds);
string strTableNames = Convert.ToString(cmd.Parameters["@tableNames"].Value);
tableNames = strTableNames.Split(',');
}
}
}
writeDataToExcelFile(ds, tableNames);
}
private void writeDataToExcelFile(DataSet ds, string[] tableNames)
{
for (int i = 0; i < tableNames.Length; i++)
{
ds.Tables[i].TableName = tableNames[i];
}
var workbook = new HSSFWorkbook();
string filename = "MultiplesheetDownloadDemo";
for (int i = 0; i < ds.Tables.Count; i++)
{
DataTable dt = ds.Tables[i];
if (dt.Rows.Count > 0)
{
var Sheet = workbook.CreateSheet(ds.Tables[i].TableName);
int cols = 0;
var myRow = Sheet.CreateRow(0);
var style1 = workbook.CreateCellStyle();
// cell background
style1.FillBackgroundColor = NPOI.HSSF.Util.HSSFColor.Violet.Index;
// font color
var font1 = workbook.CreateFont();
font1.Color = NPOI.HSSF.Util.HSSFColor.Blue.Index;
style1.SetFont(font1);
foreach (DataColumn column in dt.Columns)
{
var Cell = myRow.CreateCell(cols);
Cell.SetCellValue(column.ColumnName);
Cell.CellStyle = style1;
cols++;
}
for (int rowNum = 0; rowNum < dt.Rows.Count; rowNum++)
{
myRow = Sheet.CreateRow(rowNum + 1);
for (int cellNum = 0; cellNum < dt.Columns.Count; cellNum++)
{
var Cell = myRow.CreateCell(cellNum);
Cell.SetCellValue(Convert.ToString(dt.Rows[rowNum][cellNum]));
}
}
}
}
using (var buffer = new MemoryStream())
{
workbook.Write(buffer);
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", filename + ".xls"));
Response.Clear();
Response.BinaryWrite(buffer.GetBuffer());
Response.End();
}
}
}
Stored Procedure:
ALTER PROC ExcelDownload
(
@tableNames VARCHAR(500) OUTPUT
)
AS
BEGIN
SET @tableNames = 'tblTable1,tblTable2'
SELECT * FROM dbo.tblTable1
SELECT * FROM dbo.tblTable2
END
using NPOI.HSSF.UserModel;
public partial class WebForm1 : System.Web.UI.Page
{
string Connstring = ConfigurationManager.ConnectionStrings["Test"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
GetData();
}
private void GetData()
{
DataSet ds = new DataSet();
string[] tableNames;
using (SqlConnection con = new SqlConnection(Connstring))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "ExcelDownload";
SqlParameter param = new SqlParameter("@tableNames", SqlDbType.VarChar,50);
param.Direction = ParameterDirection.Output;
param.Value = 50;
cmd.Parameters.Add(param);
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
da.Fill(ds);
string strTableNames = Convert.ToString(cmd.Parameters["@tableNames"].Value);
tableNames = strTableNames.Split(',');
}
}
}
writeDataToExcelFile(ds, tableNames);
}
private void writeDataToExcelFile(DataSet ds, string[] tableNames)
{
for (int i = 0; i < tableNames.Length; i++)
{
ds.Tables[i].TableName = tableNames[i];
}
var workbook = new HSSFWorkbook();
string filename = "MultiplesheetDownloadDemo";
for (int i = 0; i < ds.Tables.Count; i++)
{
DataTable dt = ds.Tables[i];
if (dt.Rows.Count > 0)
{
var Sheet = workbook.CreateSheet(ds.Tables[i].TableName);
int cols = 0;
var myRow = Sheet.CreateRow(0);
var style1 = workbook.CreateCellStyle();
// cell background
style1.FillBackgroundColor = NPOI.HSSF.Util.HSSFColor.Violet.Index;
// font color
var font1 = workbook.CreateFont();
font1.Color = NPOI.HSSF.Util.HSSFColor.Blue.Index;
style1.SetFont(font1);
foreach (DataColumn column in dt.Columns)
{
var Cell = myRow.CreateCell(cols);
Cell.SetCellValue(column.ColumnName);
Cell.CellStyle = style1;
cols++;
}
for (int rowNum = 0; rowNum < dt.Rows.Count; rowNum++)
{
myRow = Sheet.CreateRow(rowNum + 1);
for (int cellNum = 0; cellNum < dt.Columns.Count; cellNum++)
{
var Cell = myRow.CreateCell(cellNum);
Cell.SetCellValue(Convert.ToString(dt.Rows[rowNum][cellNum]));
}
}
}
}
using (var buffer = new MemoryStream())
{
workbook.Write(buffer);
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", filename + ".xls"));
Response.Clear();
Response.BinaryWrite(buffer.GetBuffer());
Response.End();
}
}
}
Stored Procedure:
ALTER PROC ExcelDownload
(
@tableNames VARCHAR(500) OUTPUT
)
AS
BEGIN
SET @tableNames = 'tblTable1,tblTable2'
SELECT * FROM dbo.tblTable1
SELECT * FROM dbo.tblTable2
END