NPOI根据模板生成chart图表导出Excel

Posted chenggong007

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NPOI根据模板生成chart图表导出Excel相关的知识,希望对你有一定的参考价值。

导入NPOI的全部dll。

因为NPOI的API里面还没有对于Chart图表方面的操作,所以只能根据提示做好的图表作为模板,修改数据源的方法来改变图表。

注意:NPOI要用2003版以下的excel才能更好的支持,对才2007版以上的,导出来图表会变形。

一、制作好一个excel模板

\'NPOI根据模板生成chart图表导出Excel_NPOI\'

二、读取模板填充数据源

1.给NPOI扩展两个方法,以免下面代码中进行过多的判断



/// <summary>
/// 扩展方法
/// </summary>
public static class ExtFunction
{
public static ICell Cell(this IRow row,int index)
{
ICell cell = row.GetCell(index);
if (cell == null)
{
cell = row.CreateCell(index);
}
return cell;

}
public static IRow Row(this ISheet sheet,int index)
{
IRow row = sheet.GetRow(index);
if (row == null)
{
row = sheet.CreateRow(index);
}
return row;
}
}


2.主要代码:



//导出excel
private void btnExportExcel_Click(object sender, EventArgs e)
{

try
{
string filePath = string.Empty;
HSSFWorkbook workbook = null;
ISheet sheet1 = null;
IRow row = null;
int nowRowNum = 1;//当前行2,表头第一行
if (diskInfos.Count < 1)
{
MessageBox.Show("没有数据");
return;
}
//选择文件保存路径
filePath = getFilePath();
if (filePath == "")
{
return;
}
//模板路径
string excelTempPath = System.Environment.CurrentDirectory + "/temp.xls";
//读取Excel模板
using (FileStream fs = new FileStream(excelTempPath, FileMode.Open, FileAccess.Read))
{
workbook = new HSSFWorkbook(fs);
}
//获取sheet1
sheet1 = workbook.GetSheetAt(0);

for (int i = 0; i < diskInfos.Count; i++)
{
//获取当前行
row = sheet1.Row(nowRowNum);
//给行的单元格填充数据
row.Cell(0).SetCellValue(diskInfos[i].IP);
row.Cell(1).SetCellValue(diskInfos[i].DiskName);
row.Cell(2).SetCellValue(diskInfos[i].FreeSize);
row.Cell(3).SetCellValue(diskInfos[i].AllSize);
row.Cell(5).SetCellValue(diskInfos[i].Remark);
nowRowNum++;
}

//保存文件
using (Stream stream = File.OpenWrite(filePath))
{
workbook.Write(stream);
}
//弹出消息框
MsgForm msgForm = new MsgForm(filePath);
msgForm.ShowDialog();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

}
//弹出选择保存的路径
public string getFilePath()
{
string filePath = "";
SaveFileDialog sfd=new SaveFileDialog ();
//文件类型限制
sfd.Filter = "Files|*.xls";
//默认文件名
sfd.FileName = "DiskReport.xls";
if (sfd.ShowDialog() == DialogResult.OK)
{
filePath = sfd.FileName;
}

return filePath;
}


 功能为查询公司几个服务器的磁盘使用情况,最后导出的excel表为:

\'NPOI根据模板生成chart图表导出Excel_C#_02\'

 

以上是关于NPOI根据模板生成chart图表导出Excel的主要内容,如果未能解决你的问题,请参考以下文章

NPOI将DataGridView中的数据导出+导出Chart图表图片至Excel

WeihanLi.Npoi 根据模板导出Excel

NPOI导出EXCEL模板文件联动的效果

基于NPOI导出Excel

Office Com组件根据模板导出Excel

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