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); }
/// <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)); } }
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("成绩导出"); }
/// <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)); } }
public static void SaveToFile(this IExportable @this, string filePath) { using (var output = new FileStream(filePath, FileMode.Create, FileAccess.Write)) { @this.SaveTo(output); } }
private void btnCopyCSV_Click(object sender, EventArgs e) { int plotObjectIndex = lbPlotObjects.SelectedIndex; IExportable plottable = (IExportable)plt.GetPlottables()[plotObjectIndex]; Clipboard.SetText(plottable.GetCSV()); }
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 }); }
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)); } }
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); }
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; }
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(); } } }
/// <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); }
///// <summary> ///// 将 exportable 中的数据连接到当前 sheet 中 ///// 调用顺序: NewExcel() -> NewSheet() -> Union() -> WriteTo() -> 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() -> NewSheet() -> Union() -> WriteTo() -> 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); }
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); } }
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()); }
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); }
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); } }
/// <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); }
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); }
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); }
/// <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); }
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); }
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; } } }
/// <summary> /// 将 exportable 中的数据连接到当前 sheet 中 /// 调用顺序: NewExcel() -> NewSheet() -> Union() -> WriteTo() -> 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); }
/// <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)); }
private void DoExport() { IExportable action = tvProjects.SelectedNode.Tag as IExportable; action.Export(); }
public void setExportBehaviour(IExportable newExportable) { exportBehaviour = newExportable; }
public ExportExcel(IExportable newExportable) { exportBehaviour = newExportable; }