导入NPOI的全部dll。

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

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

一、制作好一个excel模板

二、读取模板填充数据源

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 = ;//当前行2,表头第一行
if (diskInfos.Count < )
{
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(); for (int i = ; i < diskInfos.Count; i++)
{
//获取当前行
row = sheet1.Row(nowRowNum);
//给行的单元格填充数据
row.Cell().SetCellValue(diskInfos[i].IP);
row.Cell().SetCellValue(diskInfos[i].DiskName);
row.Cell().SetCellValue(diskInfos[i].FreeSize);
row.Cell().SetCellValue(diskInfos[i].AllSize);
row.Cell().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的更多相关文章

  1. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续3篇-导出时动态生成多Sheet EXCEL)

    ExcelUtility 类库经过我(梦在旅途)近期不断的优化与新增功能,现已基本趋向稳定,功能上也基本可以满足绝大部份的EXCEL导出需求,该类库已在我们公司大型ERP系统全面使用,效果不错,今天应 ...

  2. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续2篇-模板导出综合示例)

    自ExcelUtility类推出以来,经过项目中的实际使用与不断完善,现在又做了许多的优化并增加了许多的功能,本篇不再讲述原理,直接贴出示例代码以及相关的模板.结果图,以便大家快速掌握,另外这些示例说 ...

  3. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续篇)

    上周六我发表的文章<分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility>受到了大家的热烈支持与推荐,再此表示感谢,该ExcelUtility ...

  4. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility

    1. ExcelUtility功能:  1.将数据导出到EXCEL(支持XLS,XLSX,支持多种类型模板,支持列宽自适应)  类名:ExcelUtility. Export  2.将EXCEL ...

  5. WinForm 使用 NPOI 2.2.1从datatable导出Excel

    最新的NOPI应该是2.3了,但在官网上还是2.2.1. 也是第一次使用NPOI来导出Excel文件. 在写的时候搜不到2.2.1的教程,搜了一个2.2.0的教程. 不过也没什么问题,NPOI是真的方 ...

  6. Java利用模板生成pdf并导出

    1.准备工作 (1)Adobe Acrobat pro软件:用来制作导出模板 (2)itext的jar包 2.开始制作pdf模板 (1)先用word做出模板界面 (2)文件另存为pdf格式文件 (3) ...

  7. C# 生成chart图表的三种方式

    .net中,微软给我们提供了画图类(system.drawing.imaging),在该类中画图的基本功能都有.比如:直线.折线.矩形.多边形.椭圆形.扇形.曲线等等,因此一般的图形都可以直接通过代码 ...

  8. PowerDesigner 图表导出Excel格式

    快捷方式打开运行界面:ctrl+shift+X '*************************************************************************** ...

  9. poi自动生成Ecxel表格和Chart图表

    最近因为业务需求,需要做poi自动导出Ecxel表格和Chart折线图的功能. 所以我在网上找到了一篇关于poi生成Chart图表的博客,代码很详细,但是缺少相关注释说明. 想要将它改造成自己需要的样 ...

随机推荐

  1. Ubuntu server下搭建Maven私服Nexus

    Ubuntu server下搭建Maven私服Nexus Maven私服Nexus的作用,主要是为了节省资源,在内部作为maven开发资源共享服务器来使用. 1.下载 通过root用户进去Ubuntu ...

  2. Living one day at a time (update for a long time)

    1, http://acm.hdu.edu.cn/showproblem.php?pid=1228 2014-04-14  10:39:52 分析:字符串处理题... #include<iost ...

  3. 如何评价微软Connect 2015?[转载]

    全部的新闻和公告在这里:News and Announcements at Connect(); //2015微博话题:Sina Visitor System根据题主的理解大致地总结一下……1. Vi ...

  4. Error occurred during initialization of VM java/lang/NoClassDefFoundError: java/lang/Object

    本地原来已经安装了JAVA JDK1.7并配置好了环境变量; 然后又安装了JDK8,想2个版本并存. 然后发现eclipse 打不开,闪退.然后查看环境: 发现 C:\Users\Administra ...

  5. 在Win8.1系统下如何安装运行SQL Server 2005 (以及安装SQL Server 2005 Express打补丁)

    在Win8.1系统下SQL Server 2005 安装失败怎么办? 需要替换两个文件及打sqlserver sp4补丁. 以下是操作过程. 按正常情况,在Win8/Win8.1系统下安装微软的SQL ...

  6. [原]quick2.25让描边闪起来

    本文教大家如何使用shader让描边动起来.实质就是间隔一定时间改变描边的颜色.难点:如何通过程序把颜色传给shader.想在quick2.25里面尝试的朋友,参考quick2.25精灵变灰配置一下环 ...

  7. Excel的一些常用设置

    1. Freeze表头 (1) 下拉Worksheet的Pane,让该sheet有2个工作区,将该pane下拉到某一特定的行. (2)Window->Freeze Panes.此时会将pane智 ...

  8. 【PRML读书笔记-Chapter1-Introduction】1.6 Information Theory

    熵 给定一个离散变量,我们观察它的每一个取值所包含的信息量的大小,因此,我们用来表示信息量的大小,概率分布为.当p(x)=1时,说明这个事件一定会发生,因此,它带给我的信息为0.(因为一定会发生,毫无 ...

  9. SpringMVC学习系列-后记 结合SpringMVC和Hibernate-validator,根据后台验证规则自动生成前台的js验证代码

    在SpringMVC学习系列(6) 之 数据验证中我们已经学习了如何结合Hibernate-validator进行后台的数据合法性验证,但是通常来说后台验证只是第二道保险,为了更好的用户体验会现在前端 ...

  10. [Git] 快速签出与更新所有远程分支.md

    git-fetch 命令从远程仓库复制 heads 和 tags 信息到本地,保存在临时文件 .git/FETCH_HEAD 中以备 git-merge 命令使用. 你可以使用 git fetch 命 ...