示例#1
0
        private ISheet CreateSheet(ExportConfigure config, int sheetCount)
        {
            var sheetname = sheetCount == 0 ? config.SheetName : $"{config.SheetName}_{sheetCount}";
            var newsheet  = _workbook.CreateSheet(sheetname);

            WriteSheetTitle(newsheet, config);
            WriteDataHeader(newsheet, config);
            return(newsheet);
        }
示例#2
0
        private void WriteDataHeader(ISheet newsheet, ExportConfigure config)
        {
            var cellIndex = 0;
            var newRow    = newsheet.CreateRow(SheetDataHeaderRowIndex);

            newRow.Height = 20 * 20;

            //循环导出列
            foreach (var cfg in config.Cells)
            {
                var newCell = newRow.CreateCell(cellIndex);
                var style   = CreateHasBroderCell(_workbook);
                if (cfg.Width != 0)
                {
                    newsheet.SetColumnWidth(cellIndex, cfg.Width * 256);
                }
                newCell.CellStyle = style;
                newCell.SetCellValue(cfg.Header);
                cellIndex++;
            }
        }
示例#3
0
        private void Init(string configFilePath)
        {
            _config = ExportConfigureReader.ReadConfig(configFilePath, title, sheetname);

            #region 右击文件 属性信息

            var dsi = PropertySetFactory.CreateDocumentSummaryInformation();
            dsi.Company = "四川飞牛巴士";
            _workbook.DocumentSummaryInformation = dsi;

            var si = PropertySetFactory.CreateSummaryInformation();
            si.Author                    = "四川飞牛巴士科技有限责任公司"; //填加xls文件作者信息
            si.ApplicationName           = "飞牛巴士 - 商家版程序";   //填加xls文件创建程序信息
            si.LastAuthor                = "四川飞牛巴士科技有限责任公司"; //填加xls文件最后保存者信息
            si.Comments                  = "四川飞牛巴士科技有限责任公司"; //填加xls文件作者信息
            si.Title                     = _config.Title;    //填加xls文件标题信息
            si.Subject                   = _config.Title;    //填加文件主题信息
            si.CreateDateTime            = DateTime.Now;
            _workbook.SummaryInformation = si;

            #endregion
        }
示例#4
0
        /// <summary>
        ///     写入标题行
        /// </summary>
        /// <returns>返回标题行下一行的RowIndex</returns>
        private void WriteSheetTitle(ISheet newsheet, ExportConfigure config)
        {
            #region 写入Title行

            //m_newsheet = m_workbook.CreateSheet(m_config.Sheetname);
            var headRow  = newsheet.CreateRow(SheetTitleRowIndex);
            var headCell = headRow.CreateCell(0);

            headCell.SetCellValue(_config.Title);

            var mergedRegionCount = config.Cells.Count != 0 ? config.Cells.Count - 1 : 0;
            newsheet.AddMergedRegion(new CellRangeAddress(SheetTitleRowIndex, 0, SheetTitleRowIndex, mergedRegionCount));

            var mergededCell = newsheet.GetRow(0).GetCell(0);
            var style        = CreateHasBroderCell(_workbook);
            style.Alignment = HorizontalAlignment.Center;
            var font = _workbook.CreateFont();
            font.FontHeight = 20 * 20;
            style.SetFont(font);
            mergededCell.CellStyle = style;

            #endregion
        }
示例#5
0
        private void InsertCell(TSource dr, IRow newRow, ISheet newsheet, IWorkbook workBook, ExportConfigure config)
        {
            var cellIndex = 0;
            var style     = CreateHasBroderCell(workBook);

            //循环导出列
            foreach (var cfg in config.Cells)
            {
                var newCell = CreateCell(newRow, cellIndex, cfg);
                if (cfg.IsNumberColumn)
                {
                    newCell.SetCellValue(_numberColumn);
                    _numberColumn++;
                }
                else
                {
                    SetCellValue(dr, cfg, cellIndex, newsheet, newCell);
                }
                newCell.CellStyle = style;
                cellIndex++;
            }
        }
示例#6
0
        private void CreateNewRow(IWorkbook workbook, ISheet newsheet, int rowIndex, TSource dr, ExportConfigure config)
        {
            var newRow = newsheet.CreateRow(rowIndex);

            if (config.Mode.ToLower().Equals("treegrid"))
            {
                var relationship    = config.Relationship;
                var val             = GetFieldValue(dr, relationship);
                var relationshipVal = val?.ToString();
                //TODO:还未实现TreeGrid,及更复杂的表现形式
                InsertCell(dr, newRow, newsheet, workbook, config);
            }
            else
            {
                InsertCell(dr, newRow, newsheet, workbook, config);
            }
        }
示例#7
0
        private static ExportConfigure Read(string configFilePath, string title, string sheetName)
        {
            var doc  = new XmlDocument();
            var file = File.Open(configFilePath, FileMode.Open);

            doc.Load(file);
            file.Dispose();
            var config = new ExportConfigure(title, sheetName);

            var xmlNode = GetSingleNode(doc, "configuration/fileInfo");

            config.Title        = string.IsNullOrEmpty(config.Title) ? GetAttributeValue(xmlNode, "title") : config.Title;
            config.Mode         = GetAttributeValue(xmlNode, "mode");
            config.Relationship = GetAttributeValue(xmlNode, "relationship");
            config.SheetName    = string.IsNullOrEmpty(config.SheetName) ? GetAttributeValue(xmlNode, "sheetName") : config.SheetName;
            var strRowHeight = GetAttributeValue(xmlNode, "rowHeight");
            var strMerge     = GetAttributeValue(xmlNode, "IsMerge");

            config.RowHeight = string.IsNullOrEmpty(strRowHeight) ? short.MinValue : short.Parse(strRowHeight);
            config.IsMerge   = !string.IsNullOrEmpty(strMerge) && bool.Parse(strMerge);

            #region 读取列表内容配置信息

            var nodes = GetSingleNode(doc, "configuration/columns");
            foreach (XmlNode n in nodes.ChildNodes)
            {
                if (n.NodeType == XmlNodeType.Comment)
                {
                    continue;
                }

                var propertoryName = GetAttributeValue(n, "name");
                var header         = GetAttributeValue(n, "header");
                var index          = GetAttributeValue(n, "index");
                var colIndex       = string.IsNullOrEmpty(index) ? -1 : int.Parse(index);
                if (colIndex == -1)
                {
                    throw new Exception("请指定Column节的index值,值必须是正整数!");
                }

                var strWidth = GetAttributeValue(n, "width");
                var width    = string.IsNullOrEmpty(strWidth) ? 0 : int.Parse(strWidth);

                var formula = GetAttributeValue(n, "formula");

                var strIsNumberColumn = GetAttributeValue(n, "isNumberColumn");
                var isNumberColumn    = !string.IsNullOrEmpty(strIsNumberColumn) && bool.Parse(strIsNumberColumn);

                var strIsMerge = GetAttributeValue(n, "IsMerge");
                var isMerge    = !string.IsNullOrEmpty(strIsMerge) && bool.Parse(strIsMerge);

                if (isNumberColumn)
                {
                    //propertoryName = ExcelExportTemplate.NumColumnPropertoryName;
                }
                var cell = new CellInfo(propertoryName, header, colIndex, formula, width, isNumberColumn, isMerge);
                config.Cells.Add(cell);
            }

            #endregion

            return(config);
        }