/// <summary> /// 根据类型导出数据 /// 1.描述 /// 2.类型 I->int F->float S->String B->bool /// 3.字段 /// 4.数据 一级分隔符| 二级分隔符 _ /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ExportJsonOfType(object sender, RibbonControlEventArgs e) { typeRang.Clear(); keyRang.Clear(); Excel.Worksheet activeWorksheet = Globals.ThisAddIn.Application.ActiveSheet; string[] fileName = activeWorksheet.Application.Caption.Split('.'); List <string> Keys = new List <string>(); List <string> Des = new List <string>(); Des = GetLine(activeWorksheet, 1); keyRang = GetLine(activeWorksheet, 3); typeRang = GetLine(activeWorksheet, 2); if (typeRang.Count != keyRang.Count || typeRang.Count == 0 || keyRang.Count == 0) { MessageBox.Show("字段和类型个数不匹配"); return; } Dictionary <string, string> _FieldsDic = new Dictionary <string, string>(); for (int i = 0; i < keyRang.Count; ++i) { string cell = keyRang[i]; _FieldsDic.Add(cell, typeRang[i]); Keys.Add(cell); } if (_FieldsDic.Count == 0) { return; } StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("["); int index = 3; while (true) { List <string> dataRang = GetLine(activeWorksheet, ++index, false); if (dataRang.Count == 0) { break; } stringBuilder.Append("{"); for (int i = 0; i < Keys.Count; ++i) { stringBuilder.Append("\"" + ((string)keyRang[i]).Trim() + "\":"); string fieldType = ((string)typeRang[i]).Trim(); if (i < dataRang.Count) { StringBuilder v1 = new StringBuilder(dataRang[i]); //string v = dataRang[i].Text; string v = v1.ToString().TrimEnd(); switch (fieldType) { case "I": { stringBuilder.Append(Convert.ToInt64(v)); } break; case "F": { stringBuilder.AppendFormat("{0:F}", Convert.ToDouble(v)); } break; case "S": { v = v.Replace('\r', ' '); v = v.Replace('\n', ' '); stringBuilder.Append("\"" + v + "\""); } break; case "B": { v = v.Trim(); v = v.ToLower(); if (v.Equals("0") || v.Equals(bool.FalseString.ToLower())) { stringBuilder.Append(bool.FalseString.ToLower()); } else if (v.Equals("1") || v.Equals(bool.TrueString.ToLower())) { stringBuilder.Append(bool.TrueString.ToLower()); } else { MessageBox.Show("错误的类型: [ " + fieldType + " ]"); } } break; default: { MessageBox.Show("错误的类型: [ " + fieldType + " ]"); } break; } } else { stringBuilder.Append(""); } if (i != Keys.Count - 1) { stringBuilder.Append(","); } } stringBuilder.Append("},"); } stringBuilder.Remove(stringBuilder.Length - 1, 1); stringBuilder.Append("]"); string json = stringBuilder.ToString(); this.Save(json); UnityCS cs = new UnityCS(); cs.Export(fileName[0], typeRang, keyRang, Des); }
/// <summary> /// 根据类型导出数据 /// 1.描述 /// 2.类型 I->int F->float S->String B->bool /// 3.字段 /// 4.数据 一级分隔符| 二级分隔符 _ /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ExportJsonOfType(object sender, RibbonControlEventArgs e) { typeRang.Clear(); keyRang.Clear(); Excel.Worksheet activeWorksheet = Globals.ThisAddIn.Application.ActiveSheet; string[] fileName = activeWorksheet.Application.Caption.Split('.'); List<string> Keys = new List<string>(); List<string> Des = new List<string>(); Des = GetLine(activeWorksheet, 1); keyRang = GetLine(activeWorksheet, 3); typeRang = GetLine(activeWorksheet, 2); if (typeRang.Count != keyRang.Count || typeRang.Count == 0 || keyRang.Count == 0) { MessageBox.Show("字段和类型个数不匹配"); return; } Dictionary<string, string> _FieldsDic = new Dictionary<string, string>(); for (int i = 0; i < keyRang.Count; ++i) { string cell = keyRang[i]; _FieldsDic.Add(cell, typeRang[i]); Keys.Add(cell); } if (_FieldsDic.Count == 0) { return; } StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("["); int index = 3; while (true) { List<string> dataRang = GetLine(activeWorksheet, ++index,false); if (dataRang.Count == 0) { break; } stringBuilder.Append("{"); for (int i = 0; i < Keys.Count; ++i) { stringBuilder.Append("\"" + ((string)keyRang[i]).Trim() + "\":"); string fieldType = ((string)typeRang[i]).Trim(); if (i < dataRang.Count) { StringBuilder v1 = new StringBuilder(dataRang[i]); //string v = dataRang[i].Text; string v = v1.ToString().TrimEnd(); switch (fieldType) { case "I": { stringBuilder.Append(Convert.ToInt64(v)); } break; case "F": { stringBuilder.AppendFormat("{0:F}",Convert.ToDouble(v)); } break; case "S": { v = v.Replace('\r', ' '); v = v.Replace('\n', ' '); stringBuilder.Append("\"" + v + "\""); } break; case "B": { v = v.Trim(); v = v.ToLower(); if (v.Equals("0") || v.Equals(bool.FalseString.ToLower())) { stringBuilder.Append(bool.FalseString.ToLower()); } else if (v.Equals("1") || v.Equals(bool.TrueString.ToLower())) { stringBuilder.Append(bool.TrueString.ToLower()); } else { MessageBox.Show("错误的类型: [ " + fieldType + " ]"); } } break; default: { MessageBox.Show("错误的类型: [ " + fieldType + " ]"); } break; } } else { stringBuilder.Append(""); } if (i != Keys.Count - 1) { stringBuilder.Append(","); } } stringBuilder.Append("},"); } stringBuilder.Remove(stringBuilder.Length - 1, 1); stringBuilder.Append("]"); string json = stringBuilder.ToString(); this.Save(json); UnityCS cs = new UnityCS(); cs.Export(fileName[0], typeRang, keyRang,Des); }