示例#1
0
        private void BtnExcelOutput2_OnClick(object sender, RoutedEventArgs e)
        {
            ExcelContentEntity entity = new ExcelContentEntity();

            entity.ColumnWidthArrays = new int[] { 30, 30, 20, 20, 20 };
            entity.HeaderRows        = new List <ExcelHeaderDefinition>();
            var headerRows = entity.HeaderRows;

            headerRows.Add(new ExcelHeaderDefinition {
                StartIndex = new Point(0, 0), EndIndex = new Point(0, 0), CellValue = "科室"
            });
            headerRows.Add(new ExcelHeaderDefinition {
                StartIndex = new Point(0, 1), EndIndex = new Point(0, 1), CellValue = "日期"
            });
            headerRows.Add(new ExcelHeaderDefinition {
                StartIndex = new Point(0, 2), EndIndex = new Point(0, 2), CellValue = "应执行"
            });
            headerRows.Add(new ExcelHeaderDefinition {
                StartIndex = new Point(0, 3), EndIndex = new Point(0, 3), CellValue = "已执行"
            });
            headerRows.Add(new ExcelHeaderDefinition {
                StartIndex = new Point(0, 4), EndIndex = new Point(0, 4), CellValue = "执行率%"
            });

            var datas = (IList <TestEntity1>)dataGrid1.ItemsSource;

            var dataRows = new List <List <ExcelCellDataDefinition> >();

            foreach (var item in datas)
            {
                dataRows.Add(ConvertToExcelDataRow(item));
            }
            entity.DataRows = dataRows;
            ExcelOutputHelper.OutputExcel(@"E://2.xls", "", entity);
        }
示例#2
0
 /// <summary>
 /// 检查Excel输出内容是否有效
 /// </summary>
 /// <param name="entity"></param>
 /// <returns></returns>
 private static bool ValidateExcelContent(ExcelContentEntity entity)
 {
     if (entity == null)
     {
         throw new NotAllowException("ExcelContentEntity不允许为空!");
     }
     if (entity.ColumnWidthArrays == null || entity.ColumnWidthArrays.Count() <= 0)
     {
         throw new NotAllowException("ColumnWidthArrays没有定义");
     }
     if (entity.HeaderRows == null || entity.HeaderRows.Count <= 0)
     {
         throw new NotAllowException("HeaderRows没有定义");
     }
     if (entity.DataRows == null || entity.DataRows.Count <= 0)
     {
         throw new NotAllowException("DataRows没有定义");
     }
     return(true);
 }
示例#3
0
        /// <summary>
        /// 导出Excel
        /// </summary>
        /// <param name="filenName"></param>
        /// <param name="sheetName"></param>
        /// <param name="entity"></param>
        public static void OutputExcel(string filenName, string sheetName, ExcelContentEntity entity)
        {
            IWorkbook wb = CreateFactory(filenName);

            if (string.IsNullOrEmpty(sheetName))
            {
                sheetName = "sheet1";
            }
            ValidateExcelContent(entity); // 检查Excel的内容
            ICellStyle headerCellStyle = wb.CreateCellStyle();

            // 居中方式
            headerCellStyle.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Center;
            headerCellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
            // 边框
            headerCellStyle.BorderBottom = BorderStyle.Thin;
            headerCellStyle.BorderTop    = BorderStyle.Thin;
            headerCellStyle.BorderLeft   = BorderStyle.Thin;
            headerCellStyle.BorderRight  = BorderStyle.Thin;
            // 自动换行
            headerCellStyle.WrapText            = false;
            headerCellStyle.FillBackgroundColor = 1;

            // 字符串或者其他
            ICellStyle dataStringCellStyle = wb.CreateCellStyle();

            // 居中方式
            dataStringCellStyle.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Center;
            dataStringCellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
            // 边框
            dataStringCellStyle.BorderBottom = BorderStyle.Thin;
            dataStringCellStyle.BorderTop    = BorderStyle.Thin;
            dataStringCellStyle.BorderLeft   = BorderStyle.Thin;
            dataStringCellStyle.BorderRight  = BorderStyle.Thin;
            // 自动换行
            dataStringCellStyle.WrapText = true;

            // number类型
            ICellStyle dataNumberCellStyle = wb.CreateCellStyle();

            // 居中方式
            dataNumberCellStyle.Alignment         = NPOI.SS.UserModel.HorizontalAlignment.Right;
            dataNumberCellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
            // 边框
            dataNumberCellStyle.BorderBottom = BorderStyle.Thin;
            dataNumberCellStyle.BorderTop    = BorderStyle.Thin;
            dataNumberCellStyle.BorderLeft   = BorderStyle.Thin;
            dataNumberCellStyle.BorderRight  = BorderStyle.Thin;
            // 自动换行
            dataNumberCellStyle.WrapText = true;

            // 创建表单
            ISheet sheetOne = wb.CreateSheet(sheetName);

            // 设置列宽
            int[] arrColumnWidths = entity.ColumnWidthArrays;
            for (int i = 0; i < arrColumnWidths.Length; i++)
            {
                sheetOne.SetColumnWidth(i, 256 * arrColumnWidths[i]);
            }

            IRow  dataRow  = null;
            ICell dataCell = null;

            // 创建标题栏
            int rowHeaderMaxIndex = entity.GetHeaderRowCount();

            for (int i = 0; i < rowHeaderMaxIndex; i++)
            {
                dataRow = sheetOne.CreateRow(i);
            }
            foreach (var item in entity.HeaderRows)
            {
                for (double i = item.StartIndex.X; i <= item.EndIndex.X; i++)
                {
                    dataRow = sheetOne.GetRow((int)i);
                    for (double j = item.StartIndex.Y; j <= item.EndIndex.Y; j++)
                    {
                        dataCell           = dataRow.CreateCell((int)j);
                        dataCell.CellStyle = headerCellStyle;
                    }
                }
                dataRow  = sheetOne.GetRow((int)item.StartIndex.X);
                dataCell = dataRow.GetCell((int)item.StartIndex.Y);
                dataCell.SetCellValue(item.CellValue);
                if (item.IsMergeRowOrCell())
                {
                    sheetOne.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress((int)item.StartIndex.X, (int)item.EndIndex.X, (int)item.StartIndex.Y, (int)item.EndIndex.Y));
                }
            }
            // 数据行
            int dataRowMaxIndex = entity.GetDataRowCount();

            for (int i = 0; i < dataRowMaxIndex; i++)
            {
                dataRow = sheetOne.CreateRow(i + rowHeaderMaxIndex);
                foreach (var dataItem in entity.DataRows[i])
                {
                    dataCell = dataRow.CreateCell((int)dataItem.ColumnBeginEndIndex.X, (CellType)dataItem.CellDataType);
                    if (dataItem.CellDataType == LocalCellType.Numeric)
                    {
                        dataCell.CellStyle = dataNumberCellStyle;
                    }
                    else
                    {
                        dataCell.CellStyle = dataStringCellStyle;
                    }
                    dataCell.SetCellValue(dataItem.CellValue);
                    if (dataItem.IsMergeRowOrCell())
                    {
                        for (double j = dataItem.ColumnBeginEndIndex.X + 1; j <= dataItem.ColumnBeginEndIndex.Y; j++)
                        {
                            dataRow.CreateCell((int)j);
                        }
                        sheetOne.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(i, i, (int)dataItem.ColumnBeginEndIndex.X, (int)dataItem.ColumnBeginEndIndex.Y));
                    }
                }
            }
            using (FileStream fs = File.OpenWrite(filenName))
            {
                wb.Write(fs);//向打开的这个Excel文件中写入表单并保存。
                fs.Flush();
            }
        }