求NPOI完整的使用方法
谁给个能运行的NPOI完整代码?需要引用什么,下载什么都说明一下吧!!!
就是运行网页后,按一下按钮就能生成的一个测试的excel(excel带格式的)。
http://blog.csdn.net/tonyqus/archive/2009/11/29/4898453.aspx
上面网页是很多人都推荐去看的,我看过了,代码我用不了,不知道什么原因,网上也搜不到解决办法,我列出下我运行出现的错误吧!!我是用了Tony Qu 3.3 用NPOI操作EXCEL--生成一张工资单 的例子。
CS0266: 无法将类型“NPOI.SS.UserModel.Sheet”隐式转换为“NPOI.HSSF.UserModel.HSSFSheet”。存在一个显式转换(是否缺少强制转换?)
行 38: HSSFSheet sheet1 = hssfworkbook.CreateSheet("Sheet1");
这个在=后面加个(HSSFSheet)强制转化可以解决,但后面很多都要加,什么row,cell啊这些!!
CS0246: 找不到类型或命名空间名称“Region”(是否缺少 using 指令或程序集引用?)
行 51: sheet1.AddMergedRegion(new Region(0, 0, 1, 6));
CS0117: “NPOI.HSSF.UserModel.HSSFCell”并不包含“SetCellFormula”的定义
行 116: cell.SetCellFormula(String.Format("$B{0}*0.08", rowIndex + 2));
麻烦大家了,真的不知道怎么解决,网上搜也搜不到解决办法。我是VS2005,npoi是这个:NPOI 1.2.3 final binary 在官网下的!!
谁给个全面点的例子我,好让我自己修改成我需要的!!!!谢谢了!!!
[解决办法]
是不是你的环境跟博主的环境部一样。。
你看看下面的评论
查看是否引用
using NPOI;
using NPOI.HPSF;
using NPOI.HSSF;
using NPOI.HSSF.UserModel;
using NPOI.HSSF.Util;
using NPOI.POIFS;
using NPOI.Util;
那个系统应该能跑。。你的是WIN7?
还有检查你的NPOI的版本
感觉转换问题应该是NPOI的版本问题
第二个问题是没有using.
[解决办法]
网页上有的只是源码,需要自己写,自己封装,我虽然有个类,但是属于公司资产我不方便给你
NPOI的类库就那些,你好好看看,发些代码给你看看
public class ExcelReporting { private HSSFWorkbook _workbook; private HSSFSheet _sheet; //private string formCaption; ///// <summary> ///// 打印预览时的窗口标题 ///// </summary> //public string FormCaption //{ // get { return formCaption; } // set { formCaption = value; } //} private string templateFileName; /// <summary> /// 模板文件的完整文件名 /// </summary> public string TemplateFileName { get { return templateFileName; } set { templateFileName = value; } } private string fileName; /// <summary> /// Excel文件保存在该路径的文件 /// </summary> public string FileName { get { return fileName; } set { fileName = value; } } /// <summary> /// 构造函数,默认操作第一个Sheet表 /// </summary> /// <param name="p_FileName"></param> public ExcelReporting(string p_FileName) { FileName = ""; this.TemplateFileName = p_FileName; //删除临时文件 DeleteTempplate(p_FileName); //打开Excel文件流并将内容放到HSSFWorkbook对象。 using (FileStream file = new FileStream(p_FileName, FileMode.Open, FileAccess.Read)) { _workbook = new HSSFWorkbook(file); } //设置当前操作的Sheet,默认为第一个,这样就可以操作多个。 _sheet = _workbook.GetSheetAt(0); } /// <summary> /// 构造函数,默认操作第一个Sheet表 /// Add by hhd at 20101115 /// </summary> /// <param name="p_FileName"></param> public ExcelReporting(string p_FileName, int index) { FileName = ""; this.TemplateFileName = p_FileName; //删除临时文件 DeleteTempplate(p_FileName); //打开Excel文件流并将内容放到HSSFWorkbook对象。 using (FileStream file = new FileStream(p_FileName, FileMode.Open, FileAccess.Read)) { _workbook = new HSSFWorkbook(file); } //设置当前操作的Sheet,默认为第一个,这样就可以操作多个。 _sheet = _workbook.GetSheetAt(index); } /// <summary> /// 对单元格区域赋值 /// </summary> /// <param name="p_startRowIndex">起始行号,从1开始</param> /// <param name="p_endRowIndex">结束行号,从1开始</param> /// <param name="p_startColChars">起始列名,从A开始</param> /// <param name="p_endColChars">结束列名,从A开始</param> /// <param name="p_Values"></param> public void SetValue(int p_startRowIndex, int p_endRowIndex, string p_startColChars, string p_endColChars, Array p_Values) { SetValue(p_startRowIndex, p_endRowIndex, ExcelColumnTranslator.ToIndex(p_startColChars), ExcelColumnTranslator.ToIndex(p_endColChars), p_Values); } /// <summary> /// 对单元格区域赋值 /// </summary> /// <param name="p_startRowIndex">起始行号,从1开始</param> /// <param name="p_endRowIndex">结束行号,从1开始</param> /// <param name="p_startColIndex">起始列号,从1开始</param> /// <param name="p_endColIndex">结束列号,从1开始</param> /// <param name="p_Values"></param> public void SetValue(int p_startRowIndex, int p_endRowIndex, int p_startColIndex, int p_endColIndex, Array p_Values) { //遍历行与列 int index1 = 0; int index2 = 0; for (int rowIndex = p_startRowIndex; rowIndex <= p_endRowIndex; rowIndex++) { index2 = 0; for (int colIndex = p_startColIndex; colIndex <= p_endColIndex; colIndex++) { SetValue(rowIndex, colIndex, p_Values.GetValue(index1, index2).ToString()); index2++; } index1++; } } /// <summary> /// 对单元格赋值 /// </summary> /// <param name="p_ColumnIndex">行号,从1开始</param> /// <param name="p_RowIndex">列号,从1开始</param> /// <param name="p_Value">期望值,从1开始</param> public void SetValue(int p_RowIndex, int p_ColumnIndex, string p_Value) { try { _sheet.GetRow(p_RowIndex - 1).GetCell(p_ColumnIndex - 1).SetCellValue(p_Value); } catch (Exception e) { } }
[解决办法]
这个要看你用的是什么版本了!NPOI现在的版本已经升级了,现在只有两个DLL,Ionic.Zip.dll和NPOI.dll,
至于你的错误 ,应该是这样定义
Sheet sheet1 = hssfworkbook.CreateSheet("Sheet1");
sheet1.CreateRow(0).CreateCell(0).SetCellValue("This is a Sample");
[解决办法]