初探:使用NPOI导出Excel(已有Excel模板)

/// <summary>
/// 应用开源NPOI,导出Excel
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnNPOIExport_Click(object sender, EventArgs e)
{
if (!File.Exists(sExePath + "NPOI.dll"))
{
MessageBox.Show("导出所需动态链接库NPOI.dll不存在,不支持导出。", "提示");
return;
}
if (!File.Exists(sExePath + sExcelName))
{
MessageBox.Show("DataUsageReportingFileSample.xls模板文件不存在,请确认与.EXE同路径下包含此文件。", "提示");
return;
}
 
// 填充数据
using (SaveFileDialog saveExcel = new SaveFileDialog())
{
saveExcel.Filter = "Excel文件 (*.xls)|*.xls";
string sNewFileName = string.Empty;
if (saveExcel.ShowDialog() == DialogResult.OK)
{
sNewFileName = saveExcel.FileName;
// 文件已被打开,则提示关闭
if (CFileHasOpened.FileHasOpen(sNewFileName))
{
MessageBox.Show("文件已被打开,请关闭后再重试保存。", "提示");
return;
}
// 复制模板,以后的操作都在复制的文件上进行
File.Copy(sExePath + sExcelName, sNewFileName, true);
 
InitializeWorkbook(sNewFileName);
if (null == hssfworkbook)
{ return; }
ISheet modelSheet = hssfworkbook.GetSheet("Market Data Usage");
// 单元格格式
ICellStyle CenterStyle = hssfworkbook.CreateCellStyle();
CenterStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
 
if (null == modelSheet)
{ return; }
if (null == QueriedPermissions)
{ return; }
 
for (Int32 rowIndex = 0; rowIndex < QueriedPermissions.Count; rowIndex++)
{
IRow tmpRow = modelSheet.GetRow(rowIndex + 5);
if (null == tmpRow)
{ continue; }
for (Int32 colIndex = 0; colIndex < QueriedPermissions[rowIndex].Count; colIndex++)
{
ICell tmpCell = tmpRow.GetCell(colIndex);
if (null == tmpCell)
{ continue; }
if (colIndex < 7)
{
tmpCell.SetCellValue(QueriedPermissions[rowIndex][colIndex].ToString().Trim());
}
else
{
tmpCell.SetCellValue(Convert.ToInt32(QueriedPermissions[rowIndex][colIndex].ToString().Trim()));
//tmpCell.CellStyle = CenterStyle;
}
}
}
 
//Force excel to recalculate all the formula while open
modelSheet.ForceFormulaRecalculation = true;
 
WriteToExcelWithNPOI(sNewFileName);
}
}
}
 
private static HSSFWorkbook hssfworkbook;
/// <summary>
/// 初始化工作簿
/// </summary>
private void InitializeWorkbook(string sNewFileName)
{
FileStream file = new FileStream(sNewFileName, FileMode.Open, FileAccess.Read);
if (null == file)
{ return; }
hssfworkbook = new HSSFWorkbook(file);
if (null == hssfworkbook)
{ return; }
//create a entry of DocumentSummaryInformation
DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();
dsi.Company = "test";
hssfworkbook.DocumentSummaryInformation = dsi;
 
//create a entry of SummaryInformation
SummaryInformation si = PropertySetFactory.CreateSummaryInformation();
si.Subject = "test";
hssfworkbook.SummaryInformation = si;
}
 
/// <summary>
/// 把工作簿写到本地文件
/// </summary>
private void WriteToExcelWithNPOI(string sNewFileName)
{
FileStream file = new FileStream(sNewFileName, FileMode.Create);
hssfworkbook.Write(file);
file.Close();
}

转载于:https://www.cnblogs.com/guapi/p/6767834.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值