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); }
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++; } }
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 }
/// <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 }
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++; } }
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); } }
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); }