首页 > 代码库 > NPOI新建和读取EXCEL

NPOI新建和读取EXCEL

        //基本NPOI 1.2.5.0        static void Main(string[] args)        {            string path = string.Format("E:\\export{0}.xls", DateTime.Now.ToString("yyyyMMddhhmmss"));            WriteAExcel(path);            ReadAExcel(path);            Console.ReadKey();        }
        /// <summary>        /// 创建测试        /// </summary>        /// <param name="path">路径</param>        static void WriteAExcel(string path)        {            //创建工作薄            HSSFWorkbook workbook = new HSSFWorkbook();            //创建一个名称为"排班表"的表            ISheet sheet = workbook.CreateSheet("排班表");            int rowCount = 0;            int colCount = 6;            //创建一行, 此行为标题行            IRow title = sheet.CreateRow(rowCount);            title.CreateCell(0).SetCellValue(string.Format("{0}({1})", "消化内科", "珠海市人民医院"));            //合并单元格            CellRangeAddress cellRangeAddress = new CellRangeAddress(rowCount, rowCount, 0, colCount - 1);            sheet.AddMergedRegion(cellRangeAddress);            rowCount++;            //创建一行, 空行            sheet.CreateRow(rowCount);            rowCount++;            //创建一行,此行为第二行            IRow headerRow = sheet.CreateRow(rowCount);            rowCount++;            //固定区域, 用于header            sheet.CreateFreezePane(0, 1);            string[] headerArray = new[] { "医生", "日期", "时间", "预约数", "挂号费", "状态" };            //表头行            for (int i = 0; i < headerArray.Length; i++)            {                headerRow.CreateCell(i).SetCellValue(headerArray[i]);            }            List<MyDataItem> dataList = new List<MyDataItem>();            #region 测试数据            dataList.Add(new MyDataItem() { ID = 1, DoctorName = "张某", Date = DateTime.Now, Time = "上午", Place = 3, Fee = 10, Status = "排班" });            dataList.Add(new MyDataItem() { ID = 2, DoctorName = "李某", Date = DateTime.Now, Time = "下午", Place = 3, Fee = 10, Status = "排班" });            dataList.Add(new MyDataItem() { ID = 3, DoctorName = "赵某", Date = DateTime.Now, Time = "中午", Place = 3, Fee = 10, Status = "排班" });            dataList.Add(new MyDataItem() { ID = 4, DoctorName = "杨某", Date = DateTime.Now, Time = "上午", Place = 3, Fee = 10, Status = "停诊" });            dataList.Add(new MyDataItem() { ID = 5, DoctorName = "黎某", Date = DateTime.Now, Time = "中午", Place = 3, Fee = 10, Status = "排班" });            dataList.Add(new MyDataItem() { ID = 6, DoctorName = "张某", Date = DateTime.Now, Time = "上午", Place = 3, Fee = 10, Status = "排班" });            dataList.Add(new MyDataItem() { ID = 7, DoctorName = "李某", Date = DateTime.Now, Time = "下午", Place = 3, Fee = 10, Status = "排班" });            dataList.Add(new MyDataItem() { ID = 8, DoctorName = "赵某", Date = DateTime.Now, Time = "中午", Place = 3, Fee = 10, Status = "排班" });            dataList.Add(new MyDataItem() { ID = 9, DoctorName = "杨某", Date = DateTime.Now, Time = "上午", Place = 3, Fee = 10, Status = "停诊" });            dataList.Add(new MyDataItem() { ID = 10, DoctorName = "黎某", Date = DateTime.Now, Time = "中午", Place = 3, Fee = 10, Status = "排班" });            dataList.Add(new MyDataItem() { ID = 11, DoctorName = "张某", Date = DateTime.Now, Time = "上午", Place = 3, Fee = 10, Status = "排班" });            dataList.Add(new MyDataItem() { ID = 12, DoctorName = "李某", Date = DateTime.Now, Time = "下午", Place = 3, Fee = 10, Status = "排班" });            dataList.Add(new MyDataItem() { ID = 13, DoctorName = "赵某", Date = DateTime.Now, Time = "中午", Place = 3, Fee = 10, Status = "排班" });            dataList.Add(new MyDataItem() { ID = 14, DoctorName = "杨某", Date = DateTime.Now, Time = "上午", Place = 3, Fee = 10, Status = "停诊" });            dataList.Add(new MyDataItem() { ID = 15, DoctorName = "黎某", Date = DateTime.Now, Time = "中午", Place = 3, Fee = 10, Status = "排班" });            dataList.Add(new MyDataItem() { ID = 16, DoctorName = "张某", Date = DateTime.Now, Time = "上午", Place = 3, Fee = 10, Status = "排班" });            dataList.Add(new MyDataItem() { ID = 17, DoctorName = "李某", Date = DateTime.Now, Time = "下午", Place = 3, Fee = 10, Status = "排班" });            dataList.Add(new MyDataItem() { ID = 18, DoctorName = "赵某", Date = DateTime.Now, Time = "中午", Place = 3, Fee = 10, Status = "排班" });            dataList.Add(new MyDataItem() { ID = 19, DoctorName = "杨某", Date = DateTime.Now, Time = "上午", Place = 3, Fee = 10, Status = "停诊" });            dataList.Add(new MyDataItem() { ID = 20, DoctorName = "黎某", Date = DateTime.Now, Time = "中午", Place = 3, Fee = 10, Status = "排班" });            #endregion            //添加下拉选项(序列)            AddDropdownList1(sheet, rowCount);            //添加下拉选项(指定数据)            AddDropdownList2(workbook, sheet, rowCount);            //插入数据            for (int i = 0; i < dataList.Count; i++)            {                MyDataItem item = dataList[i];                IRow dataRow = sheet.CreateRow(rowCount);                dataRow.CreateCell(0).SetCellValue(string.Format("{0}({1})", item.DoctorName, item.ID));                dataRow.CreateCell(1).SetCellValue(item.Date.ToString("yyyy/MM/dd"));                dataRow.CreateCell(2).SetCellValue(item.Time);                dataRow.CreateCell(3).SetCellValue(item.Place);                dataRow.CreateCell(4).SetCellValue(item.Fee.ToString("N2"));                dataRow.CreateCell(5);//.SetCellValue(item.Status);                rowCount++;            }            //写入文件            using (MemoryStream ms = new MemoryStream())            {                workbook.Write(ms);                using (FileStream fs = new FileStream(path, FileMode.Create))                {                    byte[] data =http://www.mamicode.com/ ms.ToArray();                    fs.Write(data, 0, data.Count());                }            }        }
        //读测试        static void ReadAExcel(string path)        {            using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))            {                IWorkbook workbook = new HSSFWorkbook(file);                ISheet sheet = workbook.GetSheet("排班表");                IRow headerRow = sheet.GetRow(2);                //一行最后一个方格的编号 即总的列数                int cellCount = headerRow.LastCellNum;                //有多少列                int rowCount = sheet.LastRowNum;                //                for (int i = 2; i < rowCount; i++)                {                    IRow row = sheet.GetRow(i);                    for (int j = row.FirstCellNum; j < cellCount; j++)                    {                        Console.Write(" " + row.GetCell(j).ToString());                    }                    Console.WriteLine();                }            }        }
        /// <summary>        /// 添加下拉框(序列)        /// </summary>        /// <param name="sheet"></param>        /// <param name="start"></param>        static void AddDropdownList1(ISheet sheet, int start)        {            CellRangeAddressList regions = new CellRangeAddressList(start, 65535, 5, 5);            DVConstraint constraint = DVConstraint.CreateExplicitListConstraint(new string[] { "就诊", "停诊" });            HSSFDataValidation dataValidate = new HSSFDataValidation(regions, constraint);            sheet.AddValidationData(dataValidate);        }        /// <summary>        /// 添加下拉框(单元格)        /// </summary>        /// <param name="workbook"></param>        /// <param name="sheet"></param>        /// <param name="start"></param>        static void AddDropdownList2(HSSFWorkbook workbook, ISheet sheet, int start)        {            ISheet sheet2 = workbook.CreateSheet("a");            sheet2.CreateRow(0).CreateCell(0).SetCellValue("上午");            sheet2.CreateRow(1).CreateCell(0).SetCellValue("中午");            sheet2.CreateRow(2).CreateCell(0).SetCellValue("下午");            sheet2.CreateRow(3).CreateCell(0).SetCellValue("晚上");            IName range = workbook.CreateName();            range.RefersToFormula = "a!$A$1:$A$4";            range.NameName = "timeDic";            CellRangeAddressList regions = new CellRangeAddressList(start, 65535, 2, 2);            DVConstraint constraint = DVConstraint.CreateFormulaListConstraint("timeDic");            HSSFDataValidation dataValidate = new HSSFDataValidation(regions, constraint);            //添加约束警告            dataValidate.CreateErrorBox("输入不合法", "请输入下拉列表中的值。");            sheet.AddValidationData(dataValidate);        }
        /// <summary>        /// 测试数据类型        /// </summary>        class MyDataItem        {            public int ID { get; set; }            public string DoctorName { get; set; }            public DateTime Date { get; set; }            public string Time { get; set; }            public int Place { get; set; }            public decimal Fee { get; set; }            public string Status { get; set; }        }

 更多可以查看官方手册:http://tonyqus.sinaapp.com/

NPOI新建和读取EXCEL