private void OpenExcel(string filePath) { Errors error = excel.OpenExcel(filePath); if (error != 0) { DisplayError(error); return; } dataPreviewGroup.Text = excel.FileName + (ClassModel.IsValidName(excel.FileName) ? "" : " (不合法)"); classModel = new ClassModel(nameSpace, excel.FileName, excel); if (classModel.IsVaild) { tableFields.Rows.Clear(); for (int i = 0; i < classModel.Fields.Count; i++) { ClassModel.Field f = classModel.Fields[i]; DataRow row = tableFields.NewRow(); row["field"] = f.name; row["type"] = f.primType; row["comment"] = f.comment; tableFields.Rows.Add(row); } } }
void OnGenJson() { int col = model.Fields.Count; string range; StringBuilder fstr = new StringBuilder(); int row = 4; int len = 0; if (asArray) { fstr.Append("["); } while (true) { range = excel.GetCell(row, 2); if (string.IsNullOrEmpty(range)) { break; } Action refresh = () => { genProgress.Value = Math.Min(totalNum, row) * 100 / totalNum; }; Invoke(refresh); if (asArray && len > 0) { fstr.Append(","); } fstr.Append("{"); ClassModel.Field f = model.Fields[0]; fstr.Append("\"").Append(f.name).Append("\":"); fstr.Append(f.GetJsonValue(range)); if (f.name == "id" && !ids.Add(range)) { currentId = range; Action box = () => { MessageBox.Show("重复的id " + currentId, "错误"); t.Abort(); Close(); Dispose(); }; Invoke(box); return; } for (int i = 1; i < col; i++) { fstr.Append(","); f = model.Fields[i]; range = excel.GetCell(row, i + 2); fstr.Append("\"").Append(f.name).Append("\":"); fstr.Append(f.GetJsonValue(range)); } fstr.Append("}"); if (!asArray) { fstr.Append("\n"); } row++; len++; } if (asArray) { fstr.Append("]"); } File.WriteAllText(Path.Combine(output, model.ClassName + ".txt"), fstr.ToString()); Action act = () => { Close(); Dispose(); DialogResult = DialogResult.OK; }; Invoke(act); }