Beispiel #1
0
        public static void WriteObject(IExportable instance, REDBinaryWriter red)
        {
            red.Write((byte)0);

            var fields = REDReflection.GetREDFields(instance.GetType());

            foreach (var field in fields)
            {
                var value = field.GetValue(instance);

                if (value == null || value == default)
                {
                    continue;
                }

                var(name, type) = REDReflection.GetREDNameTypePair(field);
                red.Write((CName)name);
                red.Write((CName)type);

                var start = red.BaseStream.Position;
                red.Write(0u);
                WriteProperty(value, red);

                var end = red.BaseStream.Position;
                red.BaseStream.Seek(start, SeekOrigin.Begin);
                red.Write(Convert.ToUInt32(end - start));
                red.BaseStream.Seek(end, SeekOrigin.Begin);
            }

            red.Write((ushort)0);
        }
Beispiel #2
0
 /// <summary>
 /// 导出到 Excel.
 /// </summary>
 /// <param name="exportable">可导出对象.</param>
 /// <param name="name">导出目标 sheet 的名称.</param>
 /// <param name="fileName">输出文件.</param>
 /// <param name="callback">导出回调.</param>
 /// <returns>this, 以支持链式操作.</returns>
 public Exporter ExportToExcel(IExportable exportable, string name, string fileName, ExportCallback callback)
 {
     using (var fs = new FileStream(fileName, FileMode.Create))
     {
         return(this.ExportToExcel(exportable, name, fs, callback));
     }
 }
Beispiel #3
0
        private void CustomTableHeader(object sender, TableWritingEventArgs args)
        {
            IExportable expObj = sender as IExportable;

            IRow  titleRow = args.Sheet.CreateRow(expObj.NextRowNum());
            ICell cell     = titleRow.CreateCell(0);

            args.Sheet.AddMergedRegion(new CellRangeAddress(titleRow.RowNum, titleRow.RowNum, 0, args.Export.Body.MaxColumnIndex));

            ICellStyle style = args.Sheet.Workbook.CreateCellStyle();

            style.Alignment         = HorizontalAlignment.Center;
            style.VerticalAlignment = VerticalAlignment.Center;
            IFont font = args.Sheet.Workbook.CreateFont();

            font.Color      = HSSFColor.Red.Index;
            font.FontName   = "宋体";
            font.FontHeight = 20 * 20;
            font.Boldweight = 10;
            font.IsItalic   = true;

            style.SetFont(font);
            cell.CellStyle = style;
            cell.SetCellValue("成绩导出");
        }
Beispiel #4
0
 /// <summary>
 /// 分页导出到 Excel.
 /// </summary>
 /// <param name="exportable">可导出对象.</param>
 /// <param name="name">导出目标 sheet 的名称.</param>
 /// <param name="pageSize">每页的大小.</param>
 /// <param name="fileName">导出目标流.</param>
 /// <param name="partNameFormat">分页文件命名格式 {0} 代表编号,必须至少包含一个 {0},否则会出现命名冲突..</param>
 /// <param name="callback">导出回调.</param>
 /// <returns>this, 以支持链式操作.</returns>
 public Exporter ExportToExcelByPage(IExportable exportable, string name, int pageSize, string fileName, string partNameFormat, ExportCallback callback)
 {
     using (var zos = new ZipOutputStream(new FileStream(fileName, FileMode.OpenOrCreate)))
     {
         return(this.ExportToExcelByPage(exportable, name, pageSize, zos, partNameFormat, callback));
     }
 }
Beispiel #5
0
 public static void SaveToFile(this IExportable @this, string filePath)
 {
     using (var output = new FileStream(filePath, FileMode.Create, FileAccess.Write))
     {
         @this.SaveTo(output);
     }
 }
Beispiel #6
0
        private void btnCopyCSV_Click(object sender, EventArgs e)
        {
            int         plotObjectIndex = lbPlotObjects.SelectedIndex;
            IExportable plottable       = (IExportable)plt.GetPlottables()[plotObjectIndex];

            Clipboard.SetText(plottable.GetCSV());
        }
Beispiel #7
0
 public static void LoadFromFile(this IExportable @this, string filePath)
 {
     using (var input = new FileStream(filePath, FileMode.Open, FileAccess.Read))
     {
         @this.LoadFrom(input);
     }
 }
        /// <summary>
        /// Writes <paramref name="properties"/> to XML. Does nothing if <paramref name="properties"/> collection is empty
        /// </summary>
        /// <param name="properties"><see cref="PropertyCollection"/> instance with custom properties</param>
        /// <param name="parentElement"><see cref="XElement"/> instance to write custom properties collection to (as a child element)</param>
        private static void WritePropertyCollection(PropertyCollection properties, XElement parentElement)
        {
            if (properties.Count == 0)
            {
                return;
            }

            XElement propertiesCollectionElement = new XElement(Elements.Properties);

            foreach (KeyValuePair <string, CustomProperty> property in properties)
            {
                IExportable exportableProperty = property.Value as IExportable;
                if (exportableProperty != null)
                {
                    XElement propertyElement = new XElement(Elements.Property,
                                                            new XAttribute(Attributes.Key, property.Key),
                                                            new XAttribute(Attributes.Type, property.Value.GetType().FullName)
                                                            );

                    exportableProperty.Export(propertyElement);

                    propertiesCollectionElement.Add(propertyElement);
                }
            }

            parentElement.Add(propertiesCollectionElement);
        }
        public void WriteRecord(TextWriter writer, IExportable objectToRecord)
        {
            EnsureWriterCreated(writer);

            AddClassMap(objectToRecord.GetType());

            _csvWriter.WriteRecords(new object[] { objectToRecord });
        }
Beispiel #10
0
 public static FileInfo SaveToFile(this IExportable exportable, object model, string filePath)
 {
     using (var output = File.Create(filePath))
     {
         exportable.Save(model, output);
         return(new FileInfo(filePath));
     }
 }
Beispiel #11
0
 public static byte[] SaveToMemory(this IExportable exportable, object model)
 {
     using (var output = new MemoryStream())
     {
         exportable.Save(model, output);
         return(output.ToArray());
     }
 }
        private static int SortOrder <T>(T service)
        {
            IExportable exportable = service as IExportable;

            if (exportable != null)
            {
                return(exportable.Metadata.Priority);
            }
            return(0);
        }
Beispiel #13
0
        public void WriteRecord(TextWriter writer, IExportable objectToRecord)
        {
            if (objectToRecord == null)
            {
                throw new ArgumentNullException(nameof(objectToRecord));
            }

            EnsureWriterCreated(writer);

            _serializer.Serialize(_jsonTextWriter, objectToRecord);
        }
		/// <summary>
		/// Initializes a new instance of the <see cref="PagedExportable"/> class.
		/// </summary>
		/// <param name="header">导出头.</param>
		/// <param name="target">包含要导出数据的 Exportable.</param>
		/// <param name="pageSize">分页大小.</param>
		public PagedExportable(IExportHeader header, IExportable target, int pageSize)
		{
			if (target == null) throw new ArgumentNullException("target");
			if (pageSize < 1 || pageSize > 65536) throw new ArgumentOutOfRangeException("pageSize");

			this._header = header;
			this._target = target;
			this._pageSize = pageSize;

			this._startIndex = 0;
		}
Beispiel #15
0
        private void excelToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (tabControl.TabPages.Count != 0)
            {
                IExportable isExportable = tabControl.SelectedTab.Controls[0] as IExportable;

                if (isExportable != null)
                {
                    isExportable.Export();
                }
            }
        }
Beispiel #16
0
        /// <summary>
        /// Exports a file.  Determines the file type and takes appropriate action.
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="platforms"></param>
        /// <returns></returns>
        public bool Export(string filename, List <Platform> platforms)
        {
            IExportable exportableObject = null;

            string ext = System.IO.Path.GetExtension(filename).ToLower();

            // GUI Scene
            if (ext == ".gsc")
            {
                exportableObject = UI.GUIScene.Load(GUIProject.CurrentProject.ProjectDirectory + "/" + filename, GUIProject.XmlAttributeOverrides);
                if (exportableObject != null)
                {
                    filename = System.IO.Path.ChangeExtension(filename, ".gbs");
                }
            }

            foreach (Platform platform in platforms)
            {
                // Determine the destination file
                string destFile = platform.OutputDirectory + "/" + filename;
                if (!System.IO.Path.IsPathRooted(destFile))
                {
                    destFile = GUIProject.CurrentProject.ProjectDirectory + "/" + destFile;
                }

                System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(destFile));

                // Export a general exportable object
                if (exportableObject != null)
                {
                    Export <IExportable>(exportableObject, destFile, platform);
                    continue;
                }

                // Simply copy the source to the destination if no explicity export step is
                // defined.
                string sourceFile = GUIProject.CurrentProject.ProjectDirectory + "/" + filename;
                if (System.IO.File.Exists(sourceFile))
                {
                    System.IO.File.Copy(sourceFile, destFile, true);

                    FileAttributes attr = System.IO.File.GetAttributes(destFile);

                    // Remove the ReadOnly flag
                    attr &= ~FileAttributes.ReadOnly;
                    System.IO.File.SetAttributes(destFile, attr);
                }
            }

            return(true);
        }
Beispiel #17
0
        ///// <summary>
        ///// 将 exportable 中的数据连接到当前 sheet 中
        ///// 调用顺序: NewExcel() -&gt; NewSheet() -&gt; Union() -&gt; WriteTo() -&gt; CloseExcel().
        ///// </summary>
        ///// <param name="exportable">可导出对象.</param>
        ///// <param name="callback">导出回调.</param>
        ///// <returns>this, 以支持链式操作.</returns>
        //public Exporter Union(Exportable exportable, ExportCallback callback)
        //{
        //    return this
        //        .UnionHeader((IExportHeader)exportable, callback)
        //        .Union((IExportable)exportable, callback);
        //}

        /// <summary>
        /// 将 exportable 中的数据连接到当前 sheet 中
        /// 调用顺序: NewExcel() -&gt; NewSheet() -&gt; Union() -&gt; WriteTo() -&gt; CloseExcel().
        /// </summary>
        /// <param name="exportable">可导出对象.</param>
        /// <param name="callback">导出回调.</param>
        /// <returns>this, 以支持链式操作.</returns>
        public Exporter Union(IExportable exportable, ExportCallback callback)
        {
            //ExportContext context = this._context;
            //if (context == null) throw new Exception("请先调用 NewExcel()");
            //ISheet sheet = context.Sheet;
            //if (sheet == null) throw new Exception("请先调用 NewSheet()");

            if (exportable.NextRow(0))
            {
                return(this.DoUnion(exportable, callback));
            }

            return(this);
        }
Beispiel #18
0
        private void BtnExportCSV_Click(object sender, EventArgs e)
        {
            int         plotObjectIndex = lbPlotObjects.SelectedIndex;
            IExportable plottable       = (IExportable)plt.GetPlottables()[plotObjectIndex];

            SaveFileDialog savefile = new SaveFileDialog();

            savefile.Title    = $"Export CSV data for {plottable}";
            savefile.FileName = "data.csv";
            savefile.Filter   = "CSV Files (*.csv)|*.csv|All files (*.*)|*.*";
            if (savefile.ShowDialog() == DialogResult.OK)
            {
                plottable.SaveCSV(savefile.FileName);
            }
        }
Beispiel #19
0
        public static string SqlScriptString(IExportable iExportable)
        {
            //INSERT INTO table_name (column1,column2,column3,...)
            //VALUES (value1,value2,value3,...);
            StringBuilder sb     = new StringBuilder();
            string        colums = "";

            colums = Generate(iExportable.GetAllFields());
            foreach (var item in iExportable.GetAllItems())
            {
                var values = Generate(item);
                sb.AppendLine(string.Format("INSERT INTO \"{0}\" ({1}) VALUES({2});", iExportable.TableName, colums, values));
            }
            return(sb.ToString());
        }
Beispiel #20
0
        public static IEnumerable <string> SqlScript(IExportable iExportable)
        {
            //INSERT INTO table_name (column1,column2,column3,...)
            //VALUES (value1,value2,value3,...);
            List <string> result = new List <string>();
            string        colums = "";

            colums = Generate(iExportable.GetAllFields());
            foreach (var item in iExportable.GetAllItems())
            {
                var values = Generate(item);
                result.Add(string.Format("INSERT INTO \"{0}\" ({1}) VALUES({2});", iExportable.TableName, colums, values));
            }
            return(result);
        }
Beispiel #21
0
        public static void Export(IExportable source, string fileTitle = null)
        {
            if (fileTitle == null)
            {
                fileTitle = source.GetType().Name;
            }

            var timestamp  = DateTime.Now.ToString("yyyyMMddHHmmssfff");
            var serializer = JsonSerializer.CreateDefault();
            var filePath   = Resources.exportPath + $"{fileTitle}_{timestamp}.json";

            using (var sw = new StreamWriter(filePath))
                using (JsonWriter writer = new JsonTextWriter(sw))
                {
                    serializer.Serialize(writer, source.ExportData);
                }
        }
Beispiel #22
0
        /// <summary>
        /// Exports a project scene
        /// </summary>
        /// <param name="projectScene"></param>
        /// <param name="platforms"></param>
        /// <returns></returns>
        public bool Export(GUIProjectScene projectScene, List <Platform> platforms)
        {
            string filename = projectScene.Filename;

            IExportable exportableObject = null;

            if (projectScene.Scene != null)
            {
                exportableObject = projectScene.Scene;
            }
            else
            {
                exportableObject = UI.GUIScene.Load(GUIProject.CurrentProject.ProjectDirectory + "/" + filename, GUIProject.XmlAttributeOverrides);
            }

            if (exportableObject == null)
            {
                return(false);
            }

            ((GUIScene)exportableObject).GenerateTextureAtlasses();
            filename = System.IO.Path.ChangeExtension(filename, ".gbs");

            foreach (Platform platform in platforms)
            {
                // Determine the destination file
                string destFile = platform.OutputDirectory + "/" + filename;
                if (!System.IO.Path.IsPathRooted(destFile))
                {
                    destFile = GUIProject.CurrentProject.ProjectDirectory + "/" + destFile;
                }

                System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(destFile));

                // Export a general exportable object
                if (exportableObject != null)
                {
                    Export <IExportable>(exportableObject, destFile, platform);
                    continue;
                }
            }

            return(true);
        }
Beispiel #23
0
        private IExportable CreateExporter(string extension)
        {
            IExportable exporter = null;

            if (extension == ".xlsx")
            {
                exporter = new ExcelExporter();
            }
            else if (extension == ".json")
            {
                exporter = new JsonExporter();
            }
            else if (extension == ".txt")
            {
                exporter = new TextExporter();
            }

            return(exporter);
        }
Beispiel #24
0
        private void CustomTableFooter(object sender, TableWritingEventArgs args)
        {
            IExportable expObj = sender as IExportable;

            IRow  endRow = args.Sheet.CreateRow(expObj.NextRowNum());
            ICell cell   = endRow.CreateCell(0);

            args.Sheet.AddMergedRegion(new CellRangeAddress(endRow.RowNum, endRow.RowNum, 0, args.Export.Body.MaxColumnIndex));

            ICellStyle style = args.Sheet.Workbook.CreateCellStyle();

            style.Alignment           = HorizontalAlignment.Right;
            style.VerticalAlignment   = VerticalAlignment.Center;
            style.FillForegroundColor = HSSFColor.Green.Index;
            style.FillPattern         = FillPattern.AltBars;
            style.FillBackgroundColor = HSSFColor.Green.Index;

            cell.SetCellValue(DateTime.Today, expObj.ExcelDateFormat);
        }
Beispiel #25
0
        /// <summary>
        /// 导出到 Excel.
        /// </summary>
        /// <param name="exportable">可导出对象.</param>
        /// <param name="name">导出目标 sheet 的名称.</param>
        /// <param name="output">输出流.</param>
        /// <param name="callback">导出回调.</param>
        /// <returns>this, 以支持链式操作.</returns>
        public Exporter ExportToExcel(IExportable exportable, string name, Stream output, ExportCallback callback)
        {
            try
            {
                this.NewExcel().NewSheet(name);

                var header = exportable as IExportHeader;
                if (header != null)
                {
                    this.UnionHeader(header, callback);
                }
                this.Union(exportable, callback)
                .WriteTo(output);
            }
            finally
            {
                this.CloseExcel();
            }

            return(this);
        }
Beispiel #26
0
        public static bool GenerateExportCSV(IExportable iExportable)
        {
            //INSERT INTO table_name (column1,column2,column3,...)
            //VALUES (value1,value2,value3,...);
            bool          result = true;
            StringBuilder sb     = new StringBuilder();

            try
            {
                sb.AppendLine(Generate(iExportable.GetAllFields(), false));
                foreach (var item in iExportable.GetAllItems())
                {
                    var values = Generate(item, false);
                    sb.AppendLine(values);
                }
                SaveFile(sb.ToString(), iExportable.FileName);
            }
            catch (Exception)
            {
                result = false;
            }

            return(result);
        }
Beispiel #27
0
        private void tvProjects_AfterSelect(object sender, TreeViewEventArgs e)
        {
            INodeHandler handler = e.Node.Tag as INodeHandler;

            if (handler != null)
            {
                if (handler.IsFirstClick)
                {
                    handler.OnFirstClick();
                }
                else
                {
                    handler.OnClick();
                }
            }
            splitContainer1.Panel2.Controls.Clear();

            IDeleteable del = handler as IDeleteable;

            tsbtnDelete.Enabled = false;
            if (del != null)
            {
                tsbtnDelete.Enabled     = true;
                tsbtnDelete.ToolTipText = del.TitleOfDelete;
                menuProject.Items.Add(del.TitleOfDelete, actImgs.Images["delete"], cmDelete_Click);
            }

            IAddable add = handler as IAddable;

            tsbtnAdd.Enabled = false;
            if (add != null)
            {
                tsbtnAdd.Enabled     = true;
                tsbtnAdd.ToolTipText = add.TitleOfAdd;
                menuProject.Items.Add(add.TitleOfAdd, actImgs.Images["add"], cmAdd_Click);
            }

            IReloadable reload = handler as IReloadable;

            tsbtnReload.Enabled = false;
            if (reload != null)
            {
                tsbtnReload.Enabled = true;
            }

            ITestable test = handler as ITestable;

            tsbtnTest.Enabled = false;
            if (test != null)
            {
                tsbtnTest.Image   = actImgs.Images[test.TestImageKey];
                tsbtnTest.Enabled = true;
            }

            IRenameable rename = handler as IRenameable;

            tsbtnRename.Enabled = false;
            if (rename != null)
            {
                tsbtnRename.Enabled = true;
            }

            IExportable export = handler as IExportable;

            tsbtnExport.Enabled = false;
            if (export != null)
            {
                tsbtnExport.Enabled = true;
            }

            ISetupable setup = handler as ISetupable;

            cmSetup.Enabled = false;
            if (setup != null)
            {
                cmSetup.Enabled = true;
            }

            IDeployable deploy = handler as IDeployable;

            cmDeploy.Enabled = false;
            if (deploy != null)
            {
                cmDeploy.Enabled = true;
            }

            IDeployToPhysical phyDeploy = handler as IDeployToPhysical;

            tsbtnDeployToPhysical.Enabled = false;
            if (phyDeploy != null)
            {
                tsbtnDeployToPhysical.Enabled = true;
            }

            IImportFromPhysical phyImport = handler as IImportFromPhysical;

            tsbtnImportFromPhysical.Enabled = false;
            if (phyImport != null)
            {
                tsbtnImportFromPhysical.Enabled = true;
            }

            IImportable import = handler as IImportable;

            tsbtnImport.Enabled = false;
            if (import != null)
            {
                tsbtnImport.Enabled = true;
            }

            IJoinProject joinProject = handler as IJoinProject;

            tsbtnJoinProject.Enabled = false;
            if (joinProject != null)
            {
                tsbtnJoinProject.Enabled = true;
            }

            ILeaveProject leaveProject = handler as ILeaveProject;

            tsbtnLeaveProject.Enabled = false;
            if (leaveProject != null)
            {
                tsbtnLeaveProject.Enabled = true;
            }

            ISyncUpload syncUplaod = handler as ISyncUpload;

            cmUpload.Enabled = false;
            if (syncUplaod != null)
            {
                cmUpload.Enabled = true;
            }

            ISyncUpload syncDownload = handler as ISyncUpload;

            cmDownload.Enabled = false;
            if (syncDownload != null)
            {
                cmDownload.Enabled = true;
            }

            tsEditMode.Items.Clear();
            rsbtnSave.Enabled = false;
            IEditorManager manager = handler as IEditorManager;

            if (manager != null)
            {
                rsbtnSave.Enabled = false;
                foreach (IEditable editable in manager.Editors)
                {
                    ToolStripItem item = tsEditMode.Items.Add(editable.ModeTitle, actImgs.Images[editable.ImageKey], cmEdit_Click);
                    item.ToolTipText = editable.ModeTitle;
                    item.Text        = string.Empty;
                    item.Tag         = editable;
                }
            }
        }
Beispiel #28
0
        /// <summary>
        /// 将 exportable 中的数据连接到当前 sheet 中
        /// 调用顺序: NewExcel() -&gt; NewSheet() -&gt; Union() -&gt; WriteTo() -&gt; CloseExcel().
        /// </summary>
        /// <param name="exportable">可导出对象.</param>
        /// <param name="callback">导出回调.</param>
        /// <returns>this, 以支持链式操作.</returns>
        public Exporter DoUnion(IExportable exportable, ExportCallback callback)
        {
            //ExportCallback exportCallback = callback;
            var context = this._context;

            if (context == null)
            {
                throw new Exception("请先调用 NewExcel()");
            }
            var sheet = context.Sheet;

            if (sheet == null)
            {
                throw new Exception("请先调用 NewSheet()");
            }

            int rowIndex = 0, y = context.StartRowIndex;

            context.CellType = CellType.DataCell;
            do
            {
                IRow row = null;
                int  columnIndex = 0, x = 0;

                context.RowIndex = rowIndex;
                while (true)
                {
                    context.Reset();
                    context.ColumnIndex = columnIndex;

                    if (exportable.NextCell(rowIndex, columnIndex, context))
                    {
                        if (callback != null)
                        {
                            callback(context);
                        }
                        if (context.IsValid)
                        {
                            // 创建单元格
                            if (row == null)
                            {
                                row = sheet.CreateRow(y++);
                            }
                            var cell = row.CreateCell(x++);

                            // 设置单元格
                            SetCell(cell, context);
                        }

                        ++columnIndex;
                    }
                    else
                    {
                        break;
                    }
                }

                ++rowIndex;
            } while (exportable.NextRow(rowIndex));
            context.StartRowIndex = y;

            return(this);
        }
Beispiel #29
0
        /// <summary>
        /// 分页导出到 Excel.
        /// </summary>
        /// <param name="exportable">可导出对象.</param>
        /// <param name="name">导出目标 sheet 的名称.</param>
        /// <param name="pageSize">每页的大小.</param>
        /// <param name="zip">导出目标流.</param>
        /// <param name="partNameFormat">分页文件命名格式 {0} 代表编号,必须至少包含一个 {0},否则会出现命名冲突..</param>
        /// <param name="callback">导出回调.</param>
        /// <returns>this, 以支持链式操作.</returns>
        public Exporter ExportToExcelByPage(IExportable exportable, string name, int pageSize, ZipOutputStream zip, string partNameFormat, ExportCallback callback)
        {
            var paged = new PagedExportable(exportable as IExportHeader, exportable, pageSize);

            return(ExportToExcelByPage(paged, name, zip, partNameFormat, callback));
        }
Beispiel #30
0
        private void DoExport()
        {
            IExportable action = tvProjects.SelectedNode.Tag as IExportable;

            action.Export();
        }
Beispiel #31
0
 public void setExportBehaviour(IExportable newExportable)
 {
     exportBehaviour = newExportable;
 }
Beispiel #32
0
 public ExportExcel(IExportable newExportable)
 {
     exportBehaviour = newExportable;
 }