少年恃险若平地,独倚长剑凌清秋。这篇文章主要讲述NPOI根据模板生成chart图表导出Excel相关的知识,希望能为你提供帮助。
导入NPOI的全部dll。
因为NPOI的API里面还没有对于Chart图表方面的操作,所以只能根据提示做好的图表作为模板,修改数据源的方法来改变图表。
注意:NPOI要用2003版以下的excel才能更好的支持,对才2007版以上的,导出来图表会变形。
【NPOI根据模板生成chart图表导出Excel】一、制作好一个excel模板
文章图片
二、读取模板填充数据源
1.给NPOI扩展两个方法,以免下面代码中进行过多的判断
/// < summary>
/// 扩展方法
/// < /summary>
public staticclass 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表为:
文章图片
推荐阅读
- 『数据结构与算法』链表(单链表双链表环形链表)(原理与Java实现)
- win7系统黑屏修好 看视频无故黑屏的修好措施
- Win7虚拟内存怎样设置最好 详细说明合理分配的技巧
- Win7系统dll动态链接库有问题的处理措施
- win7系统bioss根据不同蜂鸣警报声响判断故障的技巧
- win7系统如何自动取得ip地址 无法自动取得IP的应对措施
- win7系统外置摄像头QDI显示白板的处理办法
- win7系统更改hosts与service的迅速设置技巧
- win7系统创建宽带连接办法详细说明