Пример #1
0
 private void exportToHtml(ExportOption option, DisplayAndPrintSettings settings)
 {
     if (option == ExportOption.All)
     {
         foreach (var song in Song.listOfAllSongs())
         {
             Song.loadSong(song).ExportToHtml(settings);
         }
         if (settings.settingsType == DisplayAndPrintSettingsType.PrintSettings)
         {
             UiHelper.ShowInFileManager(Settings.GlobalApplicationSettings.PrintFolder);
         }
         else if (settings.settingsType == DisplayAndPrintSettingsType.TabletSettings)
         {
             UiHelper.ShowInFileManager(Settings.GlobalApplicationSettings.TabletFolder);
         }
     }
     else if (option == ExportOption.Set)
     {
         ucSetListPanel.ExportToHtml(settings);
     }
     else if (option == ExportOption.Song)
     {
         ucSongMetaDataPanel.ExportToHtml(settings);
     }
 }
Пример #2
0
        private void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            #region [  Initalization UI  ]

            lvLog.Items.Clear();
            lvTask.Items.Clear();

            _detailsOption = (DetailsOption)frOption.Content;
            _vertManager   = (VertificationManager)frVertManager.Content;
            _exportOption  = (ExportOption)frExportOption.Content;
            _taskReport    = (TaskReport)frTaskReport.Content;

            _taskReport.ExportRequest += _taskReport_ExportRequest;

            if (!AccessDBFormat <ISearchResult> .AccessConnectorInstalled())
            {
                AddLog("Access DB에 올바르게 접근 할 수 없습니다. 내보내기 옵션의 Access DB에서 문제를 해결하세요.", TaskLogType.System);
            }
            else
            {
                _exportOption.HiddenInstall();
            }

            #endregion

            this.Activate();
        }
Пример #3
0
        public byte[] Export <T>(ExportOption <T> exportOption)
            where T : class, new()
        {
            IWorkbook workbook = null;

            if (exportOption.ExportType == ExportType.XLS)
            {
                workbook = new HSSFWorkbook();
            }
            else
            {
                workbook = new XSSFWorkbook();
            }

            ISheet sheet = workbook.CreateSheet(exportOption.SheetName);

            var headerDict = ExportMappingDictFactory.CreateInstance(typeof(T));

            SetHeader <T>(sheet, exportOption.HeaderRowIndex, headerDict);

            if (exportOption.Data != null && exportOption.Data.Count > 0)
            {
                SetDataRows(sheet, exportOption.DataRowStartIndex, exportOption.Data, headerDict);
            }

            return(workbook?.ToBytes());
        }
Пример #4
0
        public byte[] WrapText <T>(byte[] workbookBytes, ExportOption <T> exportOption, DecoratorContext context)
            where T : class, new()
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            var attr = context.TypeDecoratorInfo.GetDecorateAttr <WrapTextAttribute>();

            if (attr == null)
            {
                return(workbookBytes);
            }

            IWorkbook workbook = workbookBytes.ToWorkbook();

            ISheet sheet = workbook.GetSheet(exportOption.SheetName);
            IRow   row;

            if (sheet.PhysicalNumberOfRows > 0)
            {
                for (int i = 0; i < sheet.PhysicalNumberOfRows; i++)
                {
                    row = sheet.GetRow(i);
                    for (int colIndex = 0; colIndex < row.PhysicalNumberOfCells; colIndex++)
                    {
                        row.GetCell(colIndex).CellStyle.WrapText = true;
                    }
                }
            }

            return(workbook.ToBytes());
        }
Пример #5
0
 // Methods
 public PrintItem(ISelectPresentationsInformation selectPresentation, CultureInfo cultureInfo)
 {
     _rectangle         = selectPresentation.DisplayRectangle;
     _mode              = selectPresentation.PresentationMode;
     _presentationImage = selectPresentation.Image;
     _exportOption      = DicomPrintSession.GetPresentationMode(_mode);
     _cultureInfo       = cultureInfo;
 }
Пример #6
0
        public byte[] Export <T>(ExportOption <T> exportOption) where T : class, new()
        {
            //var dt = ToDataTable(exportOption.Data);
            //DataSet ds = new DataSet();

            //ds.Tables.Add(dt);

            var headerDict = ExportMappingDictFactory.CreateInstance(typeof(T));

            return(Export(exportOption.Data, headerDict));
        }
Пример #7
0
        public Task <byte[]> ExportAsync <T>(ExportOption <T> exportOption)
            where T : class, new()
        {
            var workbookBytes = _excelExportProvider.Export(exportOption);

            //设置样式
            workbookBytes = Decorate(workbookBytes, exportOption);

            //返回byte数组
            return(Task.FromResult(workbookBytes));
        }
Пример #8
0
        private void MergeCols <T>(ISheet sheet, int colIndex, ExportOption <T> exportOption)
            where T : class, new()
        {
            string           currentCellValue;
            int              startRowIndex = exportOption.DataRowStartIndex;
            CellRangeAddress mergeRangeAddress;

            var startRow = sheet.GetRow(startRowIndex);

            if (startRow == null)
            {
                return;
            }

            var startCell = startRow.GetCell(colIndex);

            if (startCell == null)
            {
                return;
            }

            string startCellValue = startCell.StringCellValue;

            if (string.IsNullOrWhiteSpace(startCellValue))
            {
                return;
            }

            for (int rowIndex = exportOption.DataRowStartIndex; rowIndex < sheet.PhysicalNumberOfRows; rowIndex++)
            {
                var cell = sheet.GetRow(rowIndex)?.GetCell(colIndex);
                currentCellValue = cell == null ? string.Empty : cell.StringCellValue;

                if (currentCellValue.Trim() != startCellValue.Trim())
                {
                    mergeRangeAddress = new CellRangeAddress(startRowIndex, rowIndex - 1, colIndex, colIndex);
                    sheet.AddMergedRegion(mergeRangeAddress);

                    startRow.GetCell(colIndex).CellStyle.VerticalAlignment = VerticalAlignment.Center;

                    startRowIndex  = rowIndex;
                    startCellValue = currentCellValue;
                }

                if (rowIndex == sheet.PhysicalNumberOfRows - 1 && startRowIndex != rowIndex)
                {
                    mergeRangeAddress = new CellRangeAddress(startRowIndex, rowIndex, colIndex, colIndex);
                    sheet.AddMergedRegion(mergeRangeAddress);

                    startRow.GetCell(colIndex).CellStyle.VerticalAlignment = VerticalAlignment.Center;
                }
            }
        }
        public byte[] ExportExcel <TExport>(ExportOption exportOption, List <TExport> datas) where TExport : class, new()
        {
            var provider = this._exportProvider;

            if (exportOption.ExcelExportProvider != null)
            {
                provider = exportOption.ExcelExportProvider;
            }

            IWorkbook workbook = null;

            if (exportOption.ExcelType == Core.ExcelExport.Enums.ExcelType.XLS)
            {
                workbook = new HSSFWorkbook();
                if (datas.Count > 65536)
                {
                    throw new NotSupportedException("xls文档最大长度是65536行");
                }
            }
            else if (exportOption.ExcelType == Core.ExcelExport.Enums.ExcelType.XLSX)
            {
                workbook = new XSSFWorkbook();
                if (datas.Count > 1048576)
                {
                    throw new NotSupportedException("xlsx文档最大长度是1048576行");
                }
            }
            if (workbook == null)
            {
                throw new NotSupportedException($"{nameof(workbook)}不能是null");
            }

            DataSet dataSet = this.FindDataSource <TExport>(datas, exportOption.PropertyNames);

            byte[] workbookBytes = this.Export(exportOption, workbook, dataSet);

            DecorationContext context = new DecorationContext {
                TypeDecoInfo = TypeDecoInfoFactory.CreateTypeDecoInfo <TExport>()
            };

            List <IFilter> filters = FiltersFactory.CreateFilters(context);

            filters.ForEach(f =>
            {
                workbookBytes = f.Filter(workbookBytes, context, exportOption, provider);
            });

            return(workbookBytes);
        }
Пример #10
0
        private void InitializeOptions()
        {
            ImageExportSettings settings = ImageExportSettings.Default;

            _exportOption = (ExportOption)settings.SelectedImageExportOption;

            _selectedExporterInfo = GetExporterInfo(settings.SelectedImageExporterId);
            if (_selectedExporterInfo == null)
            {
                _selectedExporterInfo = _exporterInfoList[0];
            }

            _sizeMode        = settings.SizeMode;
            _backgroundColor = settings.BackgroundColor;
        }
Пример #11
0
        private byte[] Decorate <T>(byte[] workbookBytes, ExportOption <T> exportOption)
            where T : class, new()
        {
            DecoratorContext context = new DecoratorContext()
            {
                TypeDecoratorInfo = TypeDecoratorInfoFactory.CreateInstance(typeof(T))
            };

            GetDecorators <T>().ForEach(d =>
            {
                workbookBytes = d.Decorate(workbookBytes, exportOption, context, _excelExportProvider);
            });

            return(workbookBytes);
        }
        public byte[] Export<T>(List<T> data,ExportOption<T> exportOption) where T : class, new()
        {
            string url = Path.Combine(Environment.CurrentDirectory, DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xlsx");
            using (var writer = new StreamWriter(url))
            using (var csv = new CsvWriter(writer, new CultureInfo("zh-CN", false)))
            {
                csv.WriteRecords(data);
            }

            var bytes = File.ReadAllBytes(url);

            File.Delete(url);

            return bytes;
        }
Пример #13
0
        public Task <byte[]> ExportAsync <T>(ExportOption <T> exportOption) where T : class, new()
        {
            if (exportOption.ExportType == Enums.ExportType.XLS && exportOption.Data.Count > 65535)
            {
                throw new InvalidOperationException("xls格式文件最多支持65536行数据");
            }

            if (exportOption.ExportType == Enums.ExportType.XLSX && exportOption.Data.Count > 1048575)
            {
                throw new InvalidOperationException("xlsx格式文件最多支持1048575行数据");
            }

            NPOIExcelHelper helper        = new NPOIExcelHelper();
            var             workbookBytes = helper.Export(exportOption);

            //返回byte数组
            return(Task.FromResult(workbookBytes));
        }
Пример #14
0
        public byte[] DecorateHeader <T>(byte[] workbookBytes, ExportOption <T> exportOption, DecoratorContext context)
            where T : class, new()
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            var attr = (HeaderAttribute)context.TypeDecoratorInfo?.TypeDecoratorAttrs?.SingleOrDefault(a => a.GetType() == typeof(HeaderAttribute));

            if (attr == null)
            {
                return(workbookBytes);
            }

            IWorkbook workbook = workbookBytes.ToWorkbook();

            IRow headerRow = workbook?.GetSheet(exportOption.SheetName)?.GetRow(exportOption.HeaderRowIndex);

            if (headerRow == null)
            {
                return(workbookBytes);
            }

            ICellStyle style = workbook.CreateCellStyle();
            IFont      font  = workbook.CreateFont();

            font.FontName           = attr.FontName;
            font.Color              = (short)attr.Color.GetHashCode();
            font.FontHeightInPoints = (short)attr.FontSize;
            if (attr.IsBold)
            {
                font.Boldweight = short.MaxValue;
            }

            style.SetFont(font);

            for (int i = 0; i < headerRow.PhysicalNumberOfCells; i++)
            {
                headerRow.GetCell(i).CellStyle = style;
            }

            return(workbook.ToBytes());
        }
Пример #15
0
        public Task <byte[]> ExportAsync <T>(List <T> data, ExportOption <T> exportOption = null)
            where T : class, new()
        {
            exportOption = exportOption ?? new ExportOption <T>();

            var provider = _excelExportProvider;

            switch (exportOption.ExportType)
            {
            case Enums.ExportType.FastXLSX:
                provider = new OpenXmlExcelExportProvider();
                break;

            case Enums.ExportType.CSV:
                provider = new CSVExcelExportProvider();
                break;
            }

            if (exportOption.CustomExcelExportProvider != null)
            {
                provider = exportOption.CustomExcelExportProvider;
            }

            //if (exportOption.ExcelType == Enums.ExcelTypeEnum.XLS
            //    && exportOption.Data.Count > 65535)
            //{
            //    throw new InvalidOperationException("xls格式文件最多支持65536行数据");
            //}

            //if (exportOption.ExcelType == Enums.ExcelTypeEnum.XLSX
            //   && exportOption.Data.Count > 1048575)
            //{
            //    throw new InvalidOperationException("xlsx格式文件最多支持1048575行数据");
            //}

            var workbookBytes = provider.Export(data, exportOption);

            //设置样式
            workbookBytes = Decorate(workbookBytes, exportOption);

            //返回byte数组
            return(Task.FromResult(workbookBytes));
        }
Пример #16
0
        private void LoadSettings()
        {
            AviExportSettings settings = AviExportSettings.Default;

            _exportOption = (ExportOption)settings.ExportOption;
            _frameRate    = settings.FrameRate;

            _selectedCodec = Avi.Codec.GetInstalledCodec(settings.PreferredCodecFccCode);

            _availableCodecs.AddRange(GetAvailiableCodecs());
            if (!_availableCodecs.Contains(_selectedCodec))
            {
                _selectedCodec = Avi.Codec.Find(GetInputFormat(), null);                 //use whatever the OS provides.
            }
            _quality          = settings.Quality;
            UseDefaultQuality = settings.UseDefaultQuality;

            _sizeMode        = settings.SizeMode;
            _backgroundColor = settings.BackgroundColor;
        }
Пример #17
0
        public byte[] MergeCols <T>(byte[] workbookBytes, ExportOption <T> exportOption, DecoratorContext context)
            where T : class, new()
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            var    propertyDecoratorInfos = context.TypeDecoratorInfo.PropertyDecoratorInfos;
            var    workbook = workbookBytes.ToWorkbook();
            ISheet sheet    = workbook.GetSheet(exportOption.SheetName);

            foreach (var item in propertyDecoratorInfos)
            {
                if (item.DecoratorAttrs.SingleOrDefault(a => a.GetType() == typeof(MergeColsAttribute)) != null)
                {
                    MergeCols(sheet, item.ColIndex, exportOption);
                }
            }

            return(workbook.ToBytes());
        }
        /// <summary>
        /// 导出Excel
        /// </summary>
        private byte[] Export(ExportOption exportOption, IWorkbook workbook, DataSet dataSet)
        {
            string[] tableHeaders = exportOption.Header.SplitTextBySemicolonChar();
            string[] sheetNames   = exportOption.SheetName.SplitTextBySemicolonChar();
            string[] titles       = exportOption.Title.SplitTextBySemicolonChar();

            ICellStyle titleStyle   = this.titleStyleFunc(workbook);
            ICellStyle headerStyle  = this.headerStyleFunc(workbook);
            ICellStyle contentStyle = this.styleFunc(workbook);

            for (int sheetIndex = 0; sheetIndex < sheetNames.Length; sheetIndex++)
            {
                ISheet sheet = workbook.CreateSheet(sheetNames[sheetIndex]);

                var rowInfo = this.CreateTitleAndHeader(tableHeaders, titles, sheetIndex, sheet, titleStyle, headerStyle);


                int rowIndex = rowInfo.headerRowCount + rowInfo.titleRowCount;
                this.CreateDataContent(sheetIndex, rowIndex, sheet, contentStyle, dataSet);
            }
            return(workbook.ConvertWorkBookToBytes());
        }
Пример #19
0
 public ExportOptionDialog(ExportType exporyType, MapType mapType)
 {
     InitializeComponent();
     DataContext = new ExportOption(exporyType, mapType);
 }
Пример #20
0
        public bool DownloadChapter(Chapter downloadChapter, Source specificSource = null)
        {
            if (downloadChapter == null || !downloadChapter.Valid)
            {
                SetUpdateProgress(0, 0, UpdateStates.Error);
                return(false);
            }

            if (UpdateState == UpdateStates.Syncing || UpdateState == UpdateStates.Checking)
            {
                return(false);
            }

            var result = downloadChapter.ChapterUrls;

            if (!result.Any())
            {
                SetUpdateProgress(0, 0, UpdateStates.Error);
                return(false);
            }

            if (specificSource != null)
            {
                if (!Sources.Contains(specificSource))
                {
                    return(false);
                }
                var urlResult = (from url in downloadChapter.ChapterUrls
                                 where url.Source.ID == specificSource.ID
                                 select url);
                if (!urlResult.Any())
                {
                    return(false);
                }
                ChapterUrl specificUrl  = urlResult.First <ChapterUrl>();
                string[]   novelContent = specificSource.GetChapterContent(downloadChapter.ChapterTitle, specificUrl.Url);
                if (novelContent == null)
                {
                    return(false);
                }
                System.IO.File.WriteAllLines(downloadChapter.GetTextFileLocation(), novelContent);
                return(true);
            }

            ChapterUrl[] urls = (from url in result
                                 where url.Vip == false
                                 orderby url.Source.Priority ascending
                                 select url).ToArray <ChapterUrl>();

            foreach (ChapterUrl url in urls)
            {
                //Console.WriteLine("Download chapter " + downloadChapter.ChapterTitle + " " + (url.Vip));
                if (url == null || url.Vip)
                {
                    continue;
                }
                Source source = url.Source;

                if (source == null || !source.Valid)
                {
                    continue;
                }

                string[] novelContent = source.GetChapterContent(downloadChapter.ChapterTitle, url.Url);
                if (novelContent == null)
                {
                    continue;
                }
                System.IO.File.WriteAllLines(downloadChapter.GetTextFileLocation(), novelContent);

                if (Configuration.Instance.TextExportLocation != null)
                {
                    string exportFolderLocation = Path.Combine(Configuration.Instance.TextExportLocation, NovelTitle);

                    if (!Directory.Exists(exportFolderLocation))
                    {
                        Directory.CreateDirectory(exportFolderLocation);
                    }

                    if (Configuration.Instance.NovelExport.ContainsKey(NovelTitle))
                    {
                        ExportOption exportOption = Configuration.Instance.NovelExport[NovelTitle];
                        if (exportOption == ExportOption.Both || exportOption == ExportOption.Text)
                        {
                            downloadChapter.ExportText(exportFolderLocation);
                        }
                    }
                }
                return(true);
            }

            return(false);
        }
Пример #21
0
        private void ExportOptionDialogOnExportOptionSelected(object sender, ExportOptionSelectedEventArgs e)
        {
            try
            {
                var        exportType = e.ExportOption.ExportType;
                var        mapType    = e.ExportOption.MapType;
                IExportJob exist      = null;
#if DEBUG
                foreach (var exportJob in RootMap.ExportJobs)
                {
                    var exportOption = new ExportOption(exportJob.ExportProperties, exportJob.Type, exportJob.MapType);
                    if (exportOption.Equals(e.ExportOption))
                    {
                        exist = exportJob;
                        break;
                    }
                }
                //exist = RootMap.ExportJobs.FirstOrDefault(q => new ExportOption(q.ExportProperties, q.Type, q.MapType).Equals(e.ExportOption));
#else
                exist = RootMap.ExportJobs.FirstOrDefault(q => new ExportOption(q.ExportProperties, q.Type, q.MapType).Equals(e.ExportOption) && q.IsCurrent);
#endif

                if (exist != null)
                {
                    switch (exist.Status)
                    {
                    case ExportStatus.Completed:
                        SuperMessageBoxService.ShowInformation("Export Exists",
                                                               "An existing export that matches is up-to-date and ready for download already");
                        break;

                    case ExportStatus.Error:
                        SuperMessageBoxService.ShowInformation("Export Exists",
                                                               "An existing export that matches did not complete successfully, delete the failed export and try again");
                        break;

                    case ExportStatus.Processing:
                    case ExportStatus.Scheduled:
                        SuperMessageBoxService.ShowInformation("Export Exists",
                                                               string.Format("An existing export that matches is already {0}, please wait until it has completed", exist.Status.ToString().ToLower()));
                        break;

                    default:
                        break;
                    }
                    IsBusy = false;
                }
                else
                {
                    ExportServiceManager.CreateExportJobCompleted.RegisterEvent(RootMap.Id, OnCreateExportJobCompleted);
                    ExportServiceManager.CreateExportJobAsync(RootMap.ParentId, RootMap.Id, e.ExportOption.Value, mapType, exportType);
                    DebugLogger.Instance.LogMsg("Submitted export job details, Domain: {0}, RootMap: {1}, MapType: {2}, ExportType: {3}", RootMap.ParentId, RootMap.Id, mapType, exportType);
                }
            }
            catch (Exception ex)
            {
                DebugLogger.Instance.LogMsg("An error occurred processing the Export Options dialog. {0}.", ex.ToString());
                SuperMessageBoxService.ShowError("Error Occurred",
                                                 "You cannot export the map at the moment, please try again later.");
            }
        }
Пример #22
0
        public override void OnInspectorGUI(NodeGUI node, AssetReferenceStreamManager streamManager, NodeGUIEditor editor, Action onValueChanged)
        {
            if (m_exportPath == null)
            {
                return;
            }

            var currentEditingGroup = editor.CurrentEditingGroup;

            EditorGUILayout.HelpBox("Export To Directory: Export given files to output directory.", MessageType.Info);
            editor.UpdateNodeName(node);

            GUILayout.Space(10f);

            //Show target configuration tab
            editor.DrawPlatformSelector(node);
            using (new EditorGUILayout.VerticalScope(GUI.skin.box)) {
                var disabledScope = editor.DrawOverrideTargetToggle(node, m_exportPath.ContainsValueOf(currentEditingGroup), (bool enabled) => {
                    using (new RecordUndoScope("Remove Target Export Settings", node, true)){
                        if (enabled)
                        {
                            m_exportPath[currentEditingGroup]   = m_exportPath.DefaultValue;
                            m_exportOption[currentEditingGroup] = m_exportOption.DefaultValue;
                            m_flattenDir[currentEditingGroup]   = m_flattenDir.DefaultValue;
                        }
                        else
                        {
                            m_exportPath.Remove(currentEditingGroup);
                            m_exportOption.Remove(currentEditingGroup);
                            m_flattenDir.Remove(currentEditingGroup);
                        }
                        onValueChanged();
                    }
                });
                EditorGUI.BeginDisabledGroup(disabledScope);
                #region DisableGroup
                //using (disabledScope) {
                ExportOption opt       = (ExportOption)m_exportOption[currentEditingGroup];
                var          newOption = (ExportOption)EditorGUILayout.EnumPopup("Export Option", opt);
                if (newOption != opt)
                {
                    using (new RecordUndoScope("Change Export Option", node, true)){
                        m_exportOption[currentEditingGroup] = (int)newOption;
                        onValueChanged();
                    }
                }

                EditorGUILayout.LabelField("Export Path:");

                string newExportPath = null;

                newExportPath = editor.DrawFolderSelector("", "Select Export Folder",
                                                          m_exportPath[currentEditingGroup],
                                                          GetExportPath(m_exportPath[currentEditingGroup]),
                                                          (string folderSelected) => {
                    var projectPath = Directory.GetParent(Application.dataPath).ToString();

                    if (projectPath == folderSelected)
                    {
                        folderSelected = string.Empty;
                    }
                    else
                    {
                        var index = folderSelected.IndexOf(projectPath);
                        if (index >= 0)
                        {
                            folderSelected = folderSelected.Substring(projectPath.Length + index);
                            if (folderSelected.IndexOf('/') == 0)
                            {
                                folderSelected = folderSelected.Substring(1);
                            }
                        }
                    }
                    return(folderSelected);
                }
                                                          );
                if (newExportPath != m_exportPath[currentEditingGroup])
                {
                    using (new RecordUndoScope("Change Export Path", node, true)){
                        m_exportPath[currentEditingGroup] = newExportPath;
                        onValueChanged();
                    }
                }

                int flat    = m_flattenDir[currentEditingGroup];
                var newFlat = EditorGUILayout.ToggleLeft("Flatten Directory", flat == 1) ? 1:0;
                if (newFlat != flat)
                {
                    using (new RecordUndoScope("Change Flatten Directory", node, true)){
                        m_flattenDir[currentEditingGroup] = newFlat;
                        onValueChanged();
                    }
                }

                var exporterNodePath = GetExportPath(newExportPath);
                if (ValidateExportPath(
                        newExportPath,
                        exporterNodePath,
                        () => {
                },
                        () => {
                    using (new EditorGUILayout.HorizontalScope()) {
                        EditorGUILayout.LabelField(exporterNodePath + " does not exist.");
                        if (GUILayout.Button("Create directory"))
                        {
                            Directory.CreateDirectory(exporterNodePath);
                        }
                        onValueChanged();
                    }
                    EditorGUILayout.Space();

                    string parentDir = Path.GetDirectoryName(exporterNodePath);
                    if (Directory.Exists(parentDir))
                    {
                        EditorGUILayout.LabelField("Available Directories:");
                        string[] dirs = Directory.GetDirectories(parentDir);
                        foreach (string s in dirs)
                        {
                            EditorGUILayout.LabelField(s);
                        }
                    }
                }
                        ))
                {
                    GUILayout.Space(10f);

                    using (new EditorGUILayout.HorizontalScope()) {
                        GUILayout.FlexibleSpace();
                                                        #if UNITY_EDITOR_OSX
                        string buttonName = "Reveal in Finder";
                                                        #else
                        string buttonName = "Show in Explorer";
                                                        #endif
                        if (GUILayout.Button(buttonName))
                        {
                            EditorUtility.RevealInFinder(exporterNodePath);
                        }
                    }
                }
                #endregion
                EditorGUI.EndDisabledGroup();
            }
        }
        public byte[] SetTitleDecoration(byte[] workBookBytes, DecorationContext context, ExportOption exportOption)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }
            if (exportOption == null)
            {
                return(workBookBytes);
            }

            if (string.IsNullOrWhiteSpace(exportOption.Title))
            {
                return(workBookBytes);
            }

            List <BaseDecorationAttribute> basesList = new List <BaseDecorationAttribute>();

            basesList.AddRange(context.TypeDecoInfo.TypeDecoAttrs);
            basesList.AddRange(context.TypeDecoInfo.propertyDecoInfos.SelectMany(pd => pd.PropertyAttrs));

            IWorkbook workbook = workBookBytes.ConvertBytesToWorkBook();

            var titleAttr = (TitleAttribute)basesList.FirstOrDefault(bd => bd.GetType() == typeof(TitleAttribute));

            ICellStyle cellStyle = workbook.CreateCellStyle();

            cellStyle.Alignment           = titleAttr.HorizontalAlignment;
            cellStyle.VerticalAlignment   = titleAttr.VerticalAlignment;
            cellStyle.FillForegroundColor = titleAttr.FillForegroundColor;
            cellStyle.FillPattern         = titleAttr.FillPattern;
            cellStyle.BorderBottom        = titleAttr.BorderBottom;
            cellStyle.BorderLeft          = titleAttr.BorderLeft;
            cellStyle.BorderRight         = titleAttr.BorderRight;


            IFont font = workbook.CreateFont();

            font.Color              = (short)titleAttr.FontColor.GetHashCode();
            font.FontName           = titleAttr.FontName;
            font.FontHeightInPoints = titleAttr.FontSize;
            if (titleAttr.IsBold)
            {
                font.IsBold = true;
            }
            cellStyle.SetFont(font);


            ISheet sheet = workbook.GetSheet(exportOption.SheetName);
            IRow   row   = sheet.GetRow(0);

            for (int i = 0; i < row.PhysicalNumberOfCells; i++)
            {
                row.GetCell(i).CellStyle = cellStyle;
            }
            return(workbook.ConvertWorkBookToBytes());
        }
Пример #24
0
 public byte[] Decorate <T>(byte[] workbookBytes, ExportOption <T> exportOption, DecoratorContext context, IExcelExportProvider exportProvider)
     where T : class, new()
 {
     return(exportProvider.MergeCols(workbookBytes, exportOption, context));
 }
Пример #25
0
 public byte[] WrapText <T>(byte[] workbookBytes, ExportOption <T> exportOption, DecoratorContext context) where T : class, new()
 {
     throw new NotImplementedException();
 }
Пример #26
0
        private static void ToLocal(Post post, ExportOption option)
        {
            string text = "";

            try
            {
                text = new Markdown().Transform(post.body_md);
            }
            catch (Exception)
            {
                return;
            }

            var html = new HtmlAgilityPack.HtmlDocument();

            html.LoadHtml(text);

            var images = html.DocumentNode
                         .SelectNodes(@"//img");

            var anchors = html.DocumentNode
                          .SelectNodes(@"//a");

            var tite = new String(post.full_name.Replace("/", "_").Where(x => !System.IO.Path.GetInvalidFileNameChars().Contains(x)).ToArray());
            var path = $@"{filePath}\{post.number}";


            if (images != null)
            {
                DownloadImages(images, path);
            }

            if (option == ExportOption.Json)
            {
                var jsonData = JsonSerializer.Serialize(post);

                System.IO.File.WriteAllBytes($@"{path}.json", jsonData);
            }
            else
            {
                var md = post.body_md;
                if (images != null)
                {
                    var files = System.IO.Directory.GetFiles(path)
                                .Select(x => System.IO.Path.GetFileName(x))
                                .ToArray();

                    foreach (var item in images)
                    {
                        string url = "";
                        try
                        {
                            url = item.Attributes["src"].Value;
                        }
                        catch (Exception)
                        {
                            continue;
                        }
                        var fileName = files.FirstOrDefault(x => item.Attributes["src"].Value.Contains(x));
                        if (!string.IsNullOrEmpty(fileName))
                        {
                            md = md.Replace(url, $@"./{post.number}/{fileName}");
                        }
                    }
                }

                if (anchors != null)
                {
                    foreach (var item in anchors)
                    {
                        string url = "";
                        try
                        {
                            url = item.Attributes["href"].Value;
                        }
                        catch (Exception)
                        {
                            continue;
                        }

                        if (url.IndexOf(teamPostUrl) < 0)
                        {
                            continue;
                        }

                        md = md.Replace(url, $"./{post.number}.md");
                    }
                }

                System.IO.File.WriteAllText($@"{path}.md", md);
            }
        }
Пример #27
0
 public byte[] Filter(byte[] workBookBytes, DecorationContext context, ExportOption exportOption, IExcelExportProvider exportProvider)
 {
     return(exportProvider.SetTitleDecoration(workBookBytes, context, exportOption));
 }