using System; using System.IO; using System.Data; using System.Text; using System.Windows.Forms; namespace excel2json { /// /// 应用程序 /// sealed partial class Program { /// /// 应用程序入口 /// /// 命令行参数 [STAThread] static void Main(string[] args) { if (args.Length <= 0) { //-- GUI MODE ---------------------------------------------------------- Console.WriteLine("Launch excel2json GUI Mode..."); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new GUI.MainForm()); } else { //-- COMMAND LINE MODE ------------------------------------------------- //-- 分析命令行参数 var options = new Options(); var parser = new CommandLine.Parser(with => with.HelpWriter = Console.Error); if (parser.ParseArgumentsStrict(args, options, () => Environment.Exit(-1))) { //-- 执行导出操作 try { DateTime startTime = DateTime.Now; Run(options); //-- 程序计时 DateTime endTime = DateTime.Now; TimeSpan dur = endTime - startTime; Console.WriteLine( string.Format("[{0}]:\tConversion complete in [{1}ms].", Path.GetFileName(options.ExcelPath), dur.TotalMilliseconds) ); } catch (Exception exp) { Console.WriteLine("Error: " + exp.Message); } } }// end of else } /// /// 根据命令行参数,执行Excel数据导出工作 /// /// 命令行参数 private static void Run(Options options) { //-- Excel File string excelPath = options.ExcelPath; string excelName = Path.GetFileNameWithoutExtension(options.ExcelPath); //-- Header int header = options.HeaderRows; //-- Encoding Encoding cd = new UTF8Encoding(false); if (options.Encoding != "utf8-nobom") { foreach (EncodingInfo ei in Encoding.GetEncodings()) { Encoding e = ei.GetEncoding(); if (e.HeaderName == options.Encoding) { cd = e; break; } } } //-- Date Format string dateFormat = options.DateFormat; //-- Export path string exportPath; if (options.JsonPath != null && options.JsonPath.Length > 0) { exportPath = options.JsonPath; } else { exportPath = Path.ChangeExtension(excelPath, ".json"); } //-- Load Excel ExcelLoader excel = new ExcelLoader(excelPath, header); //-- export JsonExporter exporter = new JsonExporter(excel, options.Lowcase, options.ExportArray, dateFormat, options.ForceSheetName, header, options.ExcludePrefix, options.CellJson); exporter.SaveToFile(exportPath, cd); //-- 生成C#定义文件 if (options.CSharpPath != null && options.CSharpPath.Length > 0) { CSDefineGenerator generator = new CSDefineGenerator(excelName, excel, options.ExcludePrefix); generator.SaveToFile(options.CSharpPath, cd); } } } }