private void ReadData() { Hashtable columnHeader = new Hashtable(); Office.Excel.ForwardReadWorksheet sheet = base.Sheet; object content; if (sheet.ReadNextRow()) { while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); columnHeader.Add(sheet.CurrentCell.ColumnIndex, content == null ? "" : content.ToString()); } } bool isEmptyRow; Page9_12_2Value value = null; while (sheet.ReadNextRow()) { isEmptyRow = true; value = new Page9_12_2Value(); while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); string str = content == null ? "" : content.ToString(); if (string.IsNullOrEmpty(str) == false) { isEmptyRow = false; } switch (columnHeader[sheet.CurrentCell.ColumnIndex] as string) { case "座椅位置": value.SeatPosition = str; break; case "前气囊": value.FrontAirBags = str; break; case "侧气囊": value.SideAirBags = str; break; case "安全带预加载装置": value.SeatBeltPreloader = str; break; case "第几排座椅": value.RowOfSeat = str; break; } } if (isEmptyRow) { continue; } data.Add(value); } }
private void GetParameters(Office.Excel.ForwardReadWorksheet sheet, List <RuleItem> items) { Hashtable columnHeader = new Hashtable(); if (sheet == null) { return; } object content = null; if (sheet.ReadNextRow()) { while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); columnHeader.Add(sheet.CurrentCell.ColumnIndex, content == null ? "" : content.ToString()); } } RuleItem ruleItem; while (sheet.ReadNextRow()) { ruleItem = new RuleItem(); while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); string value = content == null ? "" : content.ToString(); switch (columnHeader[sheet.CurrentCell.ColumnIndex] as string) { case "元素id": ruleItem.Id = value; break; case "元素name": ruleItem.Name = value; break; case "元素value": ruleItem.Value = value; break; case "类别": ruleItem.Type = value == null ? "" : value.ToUpper(); break; case "元素onclick": ruleItem.OnClick = value; break; } } if (string.IsNullOrEmpty(ruleItem.Type)) { continue; } items.Add(ruleItem); } }
protected override Hashtable GetUris() { Hashtable uris = new Hashtable(); Hashtable columnHeader = new Hashtable(); string fileName = FileHelper.GetPublicPage(base.Version, base.FillType); using (Office.Excel.ForwardExcelReader pages = new Office.Excel.ForwardExcelReader(string.Format("{0}\\{1}", base.RuleFilePath, fileName))) { pages.Open(); Office.Excel.ForwardReadWorksheet sheet = pages.Activate("页面汇总") as Office.Excel.ForwardReadWorksheet; if (sheet != null) { object content = null, uri = null; if (sheet.ReadNextRow()) { while (sheet.ReadNextCell(false)) { columnHeader.Add(sheet.CurrentCell.ColumnIndex, sheet.GetContent()); } } UrlParameter urlParameter = null; while (sheet.ReadNextRow()) // 读取下一行。 { uri = null; content = null; urlParameter = new UrlParameter(); // 存储Url对应的页面标签及Excel文件名称。 while (sheet.ReadNextCell(false)) // 读取本行的下一个单元格数据。 { content = sheet.GetContent(); switch (columnHeader[sheet.CurrentCell.ColumnIndex] as string) { case "页面标签": urlParameter.LabelName = content == null ? "" : content.ToString(); break; case "所属Excel": urlParameter.IsPublicUrl = (content as string) == "公共页面"; break; case "URL": uri = content as string; break; } } if (uri != null && string.IsNullOrEmpty(uri.ToString()) == false) { Uri url = new Uri(uri.ToString()); if (uris.ContainsKey(url.AbsolutePath)) { continue; } uris.Add(url.AbsolutePath, urlParameter); } } } } return(uris); }
private void ReadConverterRule(string fileName) { _converter.Clear(); using (Office.Excel.ForwardExcelReader reader = new Office.Excel.ForwardExcelReader(fileName)) { Office.Excel.ForwardReadWorksheet sheet = reader.Activate(1) as Office.Excel.ForwardReadWorksheet; if (sheet == null) { return; } Hashtable columnHeader = new Hashtable(); while (sheet.ReadNextRow()) { columnHeader.Add(sheet.CurrentCell.ColumnIndex, sheet.GetContent()); } string str; object content; while (sheet.ReadNextRow()) { ConverterParameter para = new ConverterParameter(); while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); str = content == null ? "" : content.ToString(); switch (columnHeader[sheet.CurrentCell.ColumnIndex] as string) { case "字符替换": para.ReplaceGroup = str; break; case "企业内部参数编号": para.EntName = str; break; case "原参数名称": para.OriginName = str; break; case "填报级数分割符": para.RegexParten = str; break; case "参数拆分正则": para.SplitParten = str; break; } } if (para.OriginName == null) { continue; } _converter.Add(para); } } }
public override void ReadValidateRule() { Hashtable columnHeader = new Hashtable(); Hashtable fillParameters = new Hashtable(); using (Office.Excel.ForwardExcelReader reader = new Office.Excel.ForwardExcelReader(base.ValidateFileName)) { reader.Open(); Office.Excel.ForwardReadWorksheet sheet = reader.Activate("填报规则") as Office.Excel.ForwardReadWorksheet; if (sheet != null) { object header = null; if (sheet.ReadNextRow() && sheet.CurrentRowIndex == 1) { while (sheet.ReadNextCell(false)) { header = sheet.GetContent(); columnHeader.Add(sheet.CurrentCell.ColumnIndex, header == null ? "" : header.ToString()); } } object content = null; string key = "", str = ""; while (sheet.ReadNextRow()) { ValidateExpression expr = new ValidateExpression(); while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); str = content == null ? "" : content.ToString(); switch (columnHeader[sheet.CurrentCell.ColumnIndex] as string) { case "参数编号": key = str; break; case "校验规则": expr.Expression = str; break; case "是否必填": expr.IsRequired = (str == "是"); break; } } if (string.IsNullOrEmpty(key) == false) { rules.Add(key, expr); } } } } }
private Hashtable ReadCarTypeList(Office.Excel.ForwardReadWorksheet sheet) { object content = null; Hashtable relation = new Hashtable(); Hashtable columnHeader = GetColumnHeader(sheet); string key = "", value = ""; while (sheet.ReadNextRow()) { while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); switch (columnHeader[sheet.CurrentCell.ColumnIndex] as string) { case "全称": key = content == null ? "" : content.ToString(); break; case "缩写": value = content == null ? "" : content.ToString(); break; } } if (string.IsNullOrEmpty(key)) { continue; } relation.Add(key, value); } return(relation); }
private void ReadConverterRule(string fileName, string sheetName) { _converter.Clear(); using (Office.Excel.ForwardExcelReader reader = new Office.Excel.ForwardExcelReader(fileName)) { reader.Open(); Office.Excel.ForwardReadWorksheet sheet = reader.Activate(sheetName) as Office.Excel.ForwardReadWorksheet; if (sheet == null) { return; } Hashtable columnHeader = new Hashtable(); if (sheet.ReadNextRow()) { while (sheet.ReadNextCell(false)) { columnHeader.Add(sheet.CurrentCell.ColumnIndex, sheet.GetContent()); } } string str; object content; while (sheet.ReadNextRow()) { ConverterParameter para = new ConverterParameter(); while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); str = content == null ? "" : content.ToString(); switch (columnHeader[sheet.CurrentCell.ColumnIndex] as string) { case "字符替换": para.ValueReplaceGroup = str; break; case "参数编号": para.OriginName = str; break; } } if (string.IsNullOrEmpty(para.OriginName)) { continue; } _converter.Add(para.OriginName, para); } } }
/// <summary> /// 从Excel文件中读取树节点的父子级关系。 /// </summary> /// <returns></returns> private TreeValue InitTreeNode() { TreeValue value = null, parent = null, root = null; Hashtable table = new Hashtable(); using (Office.Excel.ForwardExcelReader reader = new Office.Excel.ForwardExcelReader(@"..\..\..\演示数据\CCC\目录字典.xlsx")) { reader.Open(); Office.Excel.ForwardReadWorksheet sheet = reader.Activate(1) as Office.Excel.ForwardReadWorksheet; sheet.ReadFollowingRow(2); string id = null, name = null, parentId = null; object content = null; do { while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); switch (sheet.CurrentCell.ColumnIndex) { case 1: id = content == null ? null : content.ToString(); break; case 2: name = content == null ? null : content.ToString(); break; case 3: parentId = content == null ? null : content.ToString(); break; } } if (id == null || name == null) { continue; } value = new TreeValue(name, parentId, null); table.Add(id, value); } while (sheet.ReadNextRow()); } foreach (DictionaryEntry entry in table) { value = entry.Value as TreeValue; if (value != null) { if (value.Parent == null) { root = value; } else { parent = table[value.Parent.Name] as TreeValue; parent.AddChild(value); } } } return(root); }
/// <summary> /// 从Excel文件中读取树节点的父子级关系。 /// </summary> /// <returns></returns> private TreeValue InitTreeNode() { TreeValue value = null, parent = null, root = null; string fileName = FileHelper.GetPublicPage(FillRuleVerson, FillType); string ruleFilePath = FileHelper.GetFillVersionByName(FillRuleVerson); Hashtable table = new Hashtable(); using (Office.Excel.ForwardExcelReader reader = new Office.Excel.ForwardExcelReader(string.Format(@"{0}\{1}", ruleFilePath, fileName))) { reader.Open(); Office.Excel.ForwardReadWorksheet sheet = reader.Activate(1) as Office.Excel.ForwardReadWorksheet; sheet.ReadFollowingRow(2); string name = null, parentName = null; object content = null; do { while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); switch (sheet.CurrentCell.ColumnIndex) { case 1: name = content == null ? null : content.ToString(); break; case 2: parentName = content == null ? null : content.ToString(); break; } } if (name == null) { continue; } value = new TreeValue(name, parentName, null); table.Add(name, value); } while (sheet.ReadNextRow()); } foreach (DictionaryEntry entry in table) { value = entry.Value as TreeValue; if (value != null) { if (value.Parent == null) { root = value; } else { parent = table[value.Parent.Name] as TreeValue; parent.AddChild(value); } } } return(root); }
/// <summary> /// 将指定工作表的下一行数据作为表头存入到散列表中。 /// </summary> /// <param name="sheet">要读取得工作表。</param> /// <returns></returns> public static Hashtable GetColumnHeader(Office.Excel.ForwardReadWorksheet sheet) { Hashtable columnHeader = new Hashtable(); if (sheet.ReadNextRow()) { while (sheet.ReadNextCell(false)) { object content = sheet.GetContent(); columnHeader.Add(sheet.CurrentCell.ColumnIndex, content == null ? "" : content.ToString()); } } return(columnHeader); }
/// <summary> /// 北环得到数据 /// </summary> /// <returns></returns> protected override object GetData(object state) { if (state == null) { Hashtable _data = new Hashtable(); using (Office.Excel.ForwardExcelReader reader = new Office.Excel.ForwardExcelReader(base.DataProvider.DataSourceFile)) { reader.Open(); Office.Excel.ForwardReadWorksheet sheet = reader.Activate(1) as Office.Excel.ForwardReadWorksheet; if (sheet == null) { return(null); } object parameter, content; while (sheet.ReadNextRow()) { parameter = null; content = null; while (sheet.ReadNextCell(false)) { if (sheet.CurrentCell.ColumnIndex == 1) { parameter = sheet.GetContent(); } else if (sheet.CurrentCell.ColumnIndex == 2) { content = sheet.GetContent(); } } if (parameter == null) { continue; } _data.Add(parameter, content == null ? "" : content.ToString()); } } string carType = _data[carTypeName] as string; if (carType != null) { _data[carTypeName] = _carTypeList[carType]; _data.Add("CarType", carType); } return(_data); } else { object[] array = state as object[]; return(ExcelFileHelper.ReadTableData(this, array.Length <= 0 ? null : array[0] as string, array[1] as List <int>)); } }
protected override object GetData(object state) { Hashtable _data = new Hashtable(); using (Office.Excel.ForwardExcelReader reader = new Office.Excel.ForwardExcelReader(base.DataProvider.DataSourceFile)) { reader.Open(); Office.Excel.ForwardReadWorksheet sheet = reader.Activate(1) as Office.Excel.ForwardReadWorksheet; if (sheet == null) { return(null); } object parameter, content; while (sheet.ReadNextRow()) { parameter = null; content = null; while (sheet.ReadNextCell(false)) { if (sheet.CurrentCell.ColumnIndex == 1) { parameter = sheet.GetContent(); } else if (sheet.CurrentCell.ColumnIndex == 2) { content = sheet.GetContent(); } } if (parameter == null) { continue; } _data.Add(parameter, content == null ? "" : content.ToString()); } } return(_data); }
/// <summary> /// 从指定文件中读取需填报的参数值。 /// </summary> /// <param name="fileName"></param> /// <returns></returns> private TreeValue ReadData(string fileName) { TreeValue root = InitTreeNode(); Hashtable treeDir = GetTreeDir(root); Hashtable current = null; TreeValue lastTreeNode = root; Hashtable columnHeader = new Hashtable(); using (Office.Excel.ForwardExcelReader reader = new Office.Excel.ForwardExcelReader(fileName)) { reader.Open(); Office.Excel.ForwardReadWorksheet sheet = reader.Activate(1) as Office.Excel.ForwardReadWorksheet; if (sheet != null) { object header = null; if (sheet.ReadNextRow() && sheet.CurrentRowIndex == 1) { while (sheet.ReadNextCell(false)) { header = sheet.GetContent(); columnHeader.Add(sheet.CurrentCell.ColumnIndex, header == null ? "" : header.ToString()); } } FillValue3C fillValue = null; object content = null; string str = null; bool nextRow = false; while (sheet.ReadNextRow()) { fillValue = new FillValue3C(); while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); str = content == null ? "" : content.ToString(); switch (columnHeader[sheet.CurrentCell.ColumnIndex] as string) { case "序号": fillValue.Key = str; break; case "参数项的值": fillValue.SetValue(str); break; case "参数项名称": str = str.Trim(); if (treeDir.ContainsKey(str)) { TreeValue parent = lastTreeNode; TreeValue child = null; while (parent != null) { child = parent.FindChild(str, null); if (child == null) { parent = parent.Parent; } else { break; } } if (child == null) { child = treeDir[str] as TreeValue; parent = child.Parent; } System.Diagnostics.Trace.Assert(child != null && parent != null); Match match = Main_3C.suffixMatcher.Match(fillValue.Key); if (match.Success) { string suffix = match.Groups["suffix"].Value; TreeValue temp = new TreeValue(child.Name, suffix); temp.CopyFrom(child); parent.AddChild(temp); child = temp; } current = child.Values; lastTreeNode = child; nextRow = true; // 当前行为目录行,忽略其它内容 } break; case "附件": fillValue.AttachFile = str; break; } if (nextRow) { break; } } if (string.IsNullOrEmpty(fillValue.Key) == false) { if (nextRow) { nextRow = false; continue; } if (current == null) { _data.Add(fillValue.Key, fillValue); } else { current.Add(fillValue.Key, fillValue); } } } } } return(root); }
/// <summary> /// 从指定文件中读取需填报的参数值。 /// </summary> /// <param name="fileName"></param> /// <returns></returns> private TreeValue ReadData(string fileName, Hashtable data, Hashtable fillParameters) { try { TreeValue root = InitTreeNode(); Hashtable treeDir = GetTreeDir(root); Hashtable current = null; TreeValue lastTreeNode = root; Hashtable columnHeader = new Hashtable(); using (Office.Excel.ForwardExcelReader reader = new Office.Excel.ForwardExcelReader(fileName)) { reader.Open(); Office.Excel.ForwardReadWorksheet sheet = reader.Activate(1) as Office.Excel.ForwardReadWorksheet; if (sheet != null) { object header = null; if (sheet.ReadNextRow() && sheet.CurrentRowIndex == 1) { while (sheet.ReadNextCell(false)) { header = sheet.GetContent(); columnHeader.Add(sheet.CurrentCell.ColumnIndex, header == null ? "" : header.ToString()); } } FillValue3C fillValue = null; object content = null; string str = null; bool nextRow = false; while (sheet.ReadNextRow()) { fillValue = new FillValue3C(); while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); str = content == null ? "" : content.ToString(); switch (columnHeader[sheet.CurrentCell.ColumnIndex] as string) { case "序号": fillValue.Key = str; break; case "参数项的值": fillValue.SetValue(string.Format("{0}{1}", string.IsNullOrEmpty(fillValue.Value) ? "" : string.Format("{0}\t", fillValue.Value), str)); break; case "参数项名称": Match match = paraNameMatcher.Match(str); if (match.Success && match.Groups["name"].Success) { str = match.Groups["name"].Value.Trim(); } else { str = str.Trim(); } if (treeDir.ContainsKey(str)) { TreeValue parent = lastTreeNode; TreeValue child = null; while (parent != null) { child = parent.FindChild(str, null); if (child == null) { parent = parent.Parent; } else { break; } } if (child == null) { child = treeDir[str] as TreeValue; parent = child.Parent; } System.Diagnostics.Trace.Assert(child != null && parent != null); match = suffixMatcher.Match(fillValue.Key); if (match.Success) { string suffix = match.Groups["suffix"].Value; TreeValue temp = new TreeValue(child.Name, suffix); temp.CopyFrom(child); parent.AddChild(temp); child = temp; } current = child.Values; lastTreeNode = child; nextRow = true; // 当前行为目录行,忽略其它内容 } break; case "附件": fillValue.PublicAttachFile = str; break; } if (nextRow) { break; } } if (string.IsNullOrEmpty(fillValue.Key) == false) { if (nextRow) { nextRow = false; continue; } AddFillValue(fillValue, lastTreeNode, current == null ? data : current); //if (current == null) // 若当前值为树节点下的值则将其添加到当前树节点的Values中, // _data.Add(fillValue.Key, fillValue); // 否则(如证书名称、厂商关系)添加到管理器的数据中。 //else // current.Add(fillValue.Key, fillValue); } } } } return(root); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.StackTrace + ex.Message); throw; } }
private void ReadData() { Hashtable columnHeader = new Hashtable(); Office.Excel.ForwardReadWorksheet sheet = base.Sheet; object content; if (sheet.ReadNextRow()) { while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); columnHeader.Add(sheet.CurrentCell.ColumnIndex, content == null ? "" : content.ToString()); } } Page9_13_3Value value = null; string lastKey = "", fixedPoint, fixedPointPos; while (sheet.ReadNextRow()) { if (value == null) { value = new Page9_13_3Value(); } string key = ""; fixedPointPos = ""; fixedPoint = ""; while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); string str = content == null ? "" : content.ToString(); //第几排座椅 座椅位置 固定点 固定点位置 车辆结构(例如:车身地板) 座椅结构(例如:座椅骨架) switch (columnHeader[sheet.CurrentCell.ColumnIndex] as string) { case "座椅位置": if (string.IsNullOrEmpty(value.SeatPosition)) { value.SeatPosition = str; } else if (value.SeatPosition != str) // 座椅位置更改时保存当前读取的填报数据。 { AddValue(lastKey, value); value = new Page9_13_3Value(); value.SeatPosition = str; } break; case "固定点": fixedPoint = str; break; case "固定点位置": fixedPointPos = str; break; case "车辆结构(例如:车身地板)": switch (fixedPoint) { case "上": value.CarStruct_UFP = str; break; case "下": switch (fixedPointPos) { case "外侧": value.CarStructOuterSide_DFP = str; break; case "内侧": value.CarStructInnerSide_DFP = str; break; } break; } break; case "座椅结构(例如:座椅骨架)": switch (fixedPoint) { case "上": value.SeatStruct_UFP = str; break; case "下": switch (fixedPointPos) { case "外侧": value.SeatStructOuterSide_DFP = str; break; case "内侧": value.SeatStructInnerSide_DFP = str; break; } break; } break; case "第几排座椅": if (string.IsNullOrEmpty(lastKey))// 新增座椅时保存当前读取的填报数据。 { key = str; lastKey = key; } else if (lastKey != str) { AddValue(lastKey, value); value = new Page9_13_3Value(); key = str; lastKey = key; } break; } } if (key == null) { continue; } } }
private void ReadConverterRule(string fileName, string sheetName) { _converter.Clear(); using (Office.Excel.ForwardExcelReader reader = new Office.Excel.ForwardExcelReader(fileName)) { reader.Open(); Office.Excel.ForwardReadWorksheet sheet = reader.Activate(sheetName) as Office.Excel.ForwardReadWorksheet; if (sheet == null) { return; } Hashtable columnHeader = new Hashtable(); if (sheet.ReadNextRow()) { while (sheet.ReadNextCell(false)) { columnHeader.Add(sheet.CurrentCell.ColumnIndex, sheet.GetContent()); } } string str; object content; while (sheet.ReadNextRow()) { ConverterParameter para = new ConverterParameter(); while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); str = content == null ? "" : content.ToString(); switch (columnHeader[sheet.CurrentCell.ColumnIndex] as string) { case "字符替换": para.ValueReplaceGroup = str; break; case "企业内部参数编号": para.EntName = str; break; case "原参数名称": para.OriginName = str; break; case "填报级数分割符": para.SplitParten = str; break; case "参数拆分正则": para.RegexParten = str; break; case "是否为表格": para.IsSheetRelation = str == "是"; break; case "参数合并": para.MergePara = str; break; case "参数合并时使用的分割符号": para.MergeSpliter = str; break; case "默认值": para.DefaultValue = str; break; case "是否使用原始内容": para.UseOriginString = str == "是"; break; case "计算表达式": para.CalcExpression = str; break; case "是否必填": para.IsRequired = str == "是"; break; case "元素类型": para.ElementType = str; break; } } if (string.IsNullOrEmpty(para.OriginName)) { continue; } _converter.Add(para); } } }
//第几排座椅 座椅位置 是否已获证 CCC证书编号 变型,如适用 安全带高度调节装置 生产厂名称 安全带型式* //型号 卷收器型式** 卷收器安装角度 安全带的安装位置 安全带安装位置附件 搭扣锁型式*** 安全带固定点数量 //CCC认证标志的位置 CCC认证标志位置附件 CCC认证标志的固定方法 private void ReadData() { Hashtable columnHeader = new Hashtable(); Office.Excel.ForwardReadWorksheet sheet = base.Sheet; object content; if (sheet.ReadNextRow()) { while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); columnHeader.Add(sheet.CurrentCell.ColumnIndex, content == null ? "" : content.ToString()); } } bool isEmptyRow; Page9_12_1Value value = null; while (sheet.ReadNextRow()) { value = new Page9_12_1Value(); string key = ""; isEmptyRow = true; while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); string str = content == null ? "" : content.ToString(); if (string.IsNullOrEmpty(str) == false) { isEmptyRow = false; } switch (columnHeader[sheet.CurrentCell.ColumnIndex] as string) { case "座椅位置": value.Position = str; break; case "是否已获证": value.Cert = str; break; case "CCC证书编号": value.CertNo = str; break; case "变型,如适用": value.Transform = str; break; case "安全带高度调节装置": value.HeightAdj = str; break; case "生产厂名称": value.Productor = str; break; case "安全带型式*": value.SeatBeltType = str; break; case "型号": value.Model = str; break; case "卷收器型式**": value.RetractorType = str; break; case "卷收器安装角度": value.RetractorAngle = str; break; case "安全带的安装位置": value.SeatBeltPosition = str; break; case "安全带安装位置附件": value.SeatBeltPosAttach = str; break; case "搭扣锁型式***": value.LockType = str; break; case "安全带固定点数量": value.FixedPosNum = str; break; case "CCC认证标志的位置": value.CCCSignPos = str; break; case "CCC认证标志位置附件": value.CCCSignPosAttach = str; break; case "CCC认证标志的固定方法": value.CCCSignFixation = str; break; case "第几排座椅": key = str; break; } } if (key == null || isEmptyRow) { continue; } List <Page9_12_1Value> values = null; if (data.ContainsKey(key)) { values = data[key] as List <Page9_12_1Value>; if (values == null) { values = new List <Page9_12_1Value>(); data[key] = values; } } else { values = new List <Page9_12_1Value>(); data.Add(key, values); } values.Add(value); } }
public virtual bool FillPage() { if (editRange == IntPtr.Zero) { return(false); } if (sheet.ReadFollowingRow(2)) { bool isEmptyRow; Dictionary <int, string> values = new Dictionary <int, string>(); IntPtr ok; do { values.Clear(); object content; isEmptyRow = true; string str = ""; while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); str = content == null ? "" : content.ToString(); if (string.IsNullOrEmpty(str) == false) { isEmptyRow = false; } values.Add(sheet.CurrentCell.ColumnIndex - 1, content == null ? null : content.ToString()); } if (isEmptyRow) { continue; } ApiSetter.ClickButton(add, hwnd, null, null); ok = IntPtr.Zero; List <IntPtr> list = ControlSorter.SortContainer(editRange); StringBuilder className = new StringBuilder(256); int index = 0; foreach (var handle in list) { className.Clear(); NativeApi.GetClassName(handle, className, 255); string classNameStr = className.ToString(); if (classNameStr.StartsWith(CCCFillManager.ComboBoxClassName)) { if (values.ContainsKey(index) && ApiSetter.IsEditable(handle)) { ApiSetter.SetComboBoxSelected(hwnd, handle, values[index]); index++; } } else if (classNameStr.StartsWith(CCCFillManager.EditClassName)) { if (values.ContainsKey(index) && ApiSetter.IsEditable(handle)) { ApiSetter.SetText(handle, values[index]); index++; } } else if (classNameStr.StartsWith(CCCFillManager.ButtonClassName)) { StringBuilder text = className.Clear(); NativeApi.GetWindowText(handle, text, 255); if (text.ToString() == "确定") { ok = handle; } else if (text.ToString() == "附件" && values.ContainsKey(index) && string.IsNullOrEmpty(values[index]) == false) { ApiSetter.ClickButton(handle, hwnd, ListenAttachWindow, new FillValue3C() { PublicAttachFile = values[index], Separators = FillParameter3C.DefaultSeparators }); } } } if (ok != IntPtr.Zero) { ApiSetter.ClickButton(ok, hwnd, null, null); } } while (sheet.ReadNextRow()); this.Main.ClickSaveButton(this.Save); return(true); } return(false); }
/// <summary> /// 读取填报规则。 /// </summary> /// <param name="fileName"></param> /// <returns></returns> private Hashtable ReadFillParameter(string fileName) { Hashtable columnHeader = new Hashtable(); Hashtable fillParameters = new Hashtable(); using (Office.Excel.ForwardExcelReader reader = new Office.Excel.ForwardExcelReader(fileName)) { reader.Open(); Office.Excel.ForwardReadWorksheet sheet = reader.Activate("填报规则") as Office.Excel.ForwardReadWorksheet; if (sheet != null) { object header = null; if (sheet.ReadNextRow() && sheet.CurrentRowIndex == 1) { while (sheet.ReadNextCell(false)) { header = sheet.GetContent(); columnHeader.Add(sheet.CurrentCell.ColumnIndex, header == null ? "" : header.ToString()); } } FillParameter3C fillParameter = null; object content = null; string str = null; while (sheet.ReadNextRow()) { fillParameter = new FillParameter3C(); while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); str = content == null ? "" : content.ToString(); switch (columnHeader[sheet.CurrentCell.ColumnIndex] as string) { case "参数编号": fillParameter.Key = str; break; case "类型": fillParameter.Type = str; break; case "编辑窗口类型": fillParameter.EditType = str; break; case "下拉框选择方式": fillParameter.IsComboBoxPreciseMatch = str == "包含"; break; case "参数分割符": fillParameter.SetSeparator(str); break; } } if (string.IsNullOrEmpty(fillParameter.Key) == false) { fillParameters.Add(fillParameter.Key, fillParameter); } } } } return(fillParameters); }
protected override Hashtable GetUris() { Hashtable uris = new Hashtable(); //读取新能源下面的公共页面(路径) string fileName = FileHelper.GetPublicPage(base.Version, base.FillType); using (Office.Excel.ForwardExcelReader pages = new Office.Excel.ForwardExcelReader(string.Format("{0}\\{1}", base.RuleFilePath, fileName))) { pages.Open(); Office.Excel.ForwardReadWorksheet sheet = pages.Activate("页面汇总") as Office.Excel.ForwardReadWorksheet; if (sheet != null) { XNYUrlParameter urlParameter = null; Uri url = null; Hashtable columnHeader = GetColumnHeader(sheet); while (sheet.ReadNextRow()) // 读取下一行。 { urlParameter = new XNYUrlParameter(); while (sheet.ReadNextCell(false)) // 读取本行的下一个单元格数据。 { switch (columnHeader[sheet.CurrentCell.ColumnIndex] as string) { case "URL": url = new Uri(sheet.GetContent() as string); break; case "页面标签": urlParameter.LabelName = sheet.GetContent() as string; break; case "所属Excel": urlParameter.IsPublicUrl = ((sheet.GetContent() as string) == "公共页面"); break; case "表数据": urlParameter.IsTableData = ((sheet.GetContent() as string) == "是"); break; } } if (url != null && string.IsNullOrEmpty(url.ToString()) == false) { if (uris.ContainsKey(url.AbsolutePath)) { continue; } uris.Add(url.AbsolutePath, urlParameter); } } } sheet = pages.Activate(carTypeName) as Office.Excel.ForwardReadWorksheet; if (sheet != null) { _carTypeList = ReadCarTypeList(sheet); } else { throw new ArgumentException(string.Format("填报规则中没有名为“{0}”的工作表。", carTypeName)); } } return(uris); }
public bool FillPage() { Hashtable columnHeader = new Hashtable(); object content; if (sheet.ReadNextRow()) { while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); columnHeader.Add(sheet.CurrentCell.ColumnIndex, content == null ? "" : content.ToString()); } } FillData data = new FillData(); List <IntPtr> controls = GetFillControls(); int index = 0; StringBuilder className = new StringBuilder(256); while (sheet.ReadNextRow()) { int fillCount = 0; while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); switch (columnHeader[sheet.CurrentCell.ColumnIndex] as string) { case "用符号识别(选择(是、否、不适用))": data.SymbolIdentity = content == null ? "不适用" : string.IsNullOrEmpty(content.ToString()) ? "不适用" : content.ToString(); break; case "位置": data.Position = content == null ? null : content.ToString(); break; } } for (; index < controls.Count && fillCount < 2; index++) { NativeApi.GetClassName(controls[index], className, 255); if (className.ToString().StartsWith(CCCFillManager.ComboBoxClassName)) { ApiSetter.SetComboBoxSelected(hwnd, controls[index], data.SymbolIdentity); fillCount++; } else if (className.ToString().StartsWith(CCCFillManager.EditClassName)) { ApiSetter.SetText(controls[index], data.Position); fillCount++; } else if (saveButton != IntPtr.Zero && className.ToString().StartsWith(CCCFillManager.ButtonClassName)) { className.Clear(); NativeApi.GetWindowText(controls[index], className, 255); if (className.ToString() == "保存") { saveButton = controls[index]; } } } } if (saveButton == IntPtr.Zero) { for (; index < controls.Count; index++) { className.Clear(); NativeApi.GetWindowText(controls[index], className, 255); if (className.ToString() == "保存") { saveButton = controls[index]; } } } this.Main.ClickSaveButton(saveButton); return(true); }
private DataTable GetTableData(string sheetName) { bool isColumnHeader = false; object content = null; Hashtable columnHeader = new Hashtable(); DataTable table = null; DataRow row = null; using (Office.Excel.ForwardExcelReader reader = new Office.Excel.ForwardExcelReader(this.DataFile)) { reader.Open(); // 表格数据的工作表标签使用"前缀_序号"格式命名。 sheetName = string.Format("{0}_{1}", sheetName, base.FillIndexes.Count == 0 ? 1 : base.FillIndexes[0].CurrentIndex + 1); Office.Excel.ForwardReadWorksheet sheet = reader.Activate(sheetName) as Office.Excel.ForwardReadWorksheet; if (sheet != null) { while (sheet.ReadNextRow()) { while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); string str = content == null ? "" : content.ToString(); if (isColumnHeader == false && table == null) { table = new System.Data.DataTable(); isColumnHeader = true; row = null; } int columnIndex = sheet.CurrentCell.ColumnIndex; if (isColumnHeader) { if (string.IsNullOrEmpty(str)) { continue; } columnHeader.Add(columnIndex, str); try { if (string.IsNullOrEmpty(str) == false) { table.Columns.Add(str); } } catch (System.Data.DuplicateNameException) { throw new ArgumentException(string.Format("在Excel文件:{0}的{1}工作表中,{2}行的值有重复!", sheet.Owner.FileName, sheet.Name, sheet.CurrentRowIndex)); } } else { string columnName = columnHeader[columnIndex] as string; if (table.Columns.Contains(columnName)) { row[columnName] = str; } } } if (row != null) { table.Rows.Add(row); } row = table.NewRow(); isColumnHeader = false; } } return(table); } }
//得到参数 protected void GetParameters() { Hashtable uniqueTable = new Hashtable(); _parameters.Clear(); string note = ""; Hashtable group = null; Hashtable columnHeader = new Hashtable(); using (Office.Excel.ForwardExcelReader reader = new Office.Excel.ForwardExcelReader(GetParameterFile())) { reader.Open(); string sheetName = string.Format("{0}({1})", _urlParameter.LabelName, this.Standard); // 同类车型中不同排放标准的填报规则可能不同。 sheetName = reader.Contains(sheetName) ? sheetName : _urlParameter.LabelName; Office.Excel.ForwardReadWorksheet sheet = reader.Activate(sheetName) as Office.Excel.ForwardReadWorksheet; if (sheet == null) { return; } object content = null; if (sheet.ReadNextRow()) { while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); columnHeader.Add(sheet.CurrentCell.ColumnIndex, content == null ? "" : content.ToString()); } } FillParameter dElement; FillParameterKey key; while (sheet.ReadNextRow()) { dElement = new FillParameter(); while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); string value = content == null ? "" : content.ToString(); switch (columnHeader[sheet.CurrentCell.ColumnIndex] as string) { case "元素id": dElement.Id = value; break; case "元素name": dElement.Name = value; break; case "元素value": dElement.Value = value; break; case "类别": dElement.Type = value == null ? "" : value.ToUpper(); break; case "onclick": dElement.OnClick = value; break; case "参数名称": dElement.ParameterName = value; break; case "备注": note = value; break; case "可新增": dElement.CanAdd = value == "是"; break; case "查找": dElement.SearchString = value; break; case "frameId": dElement.FrameId = value; break; case "是否必填": dElement.IsRequired = value == "是"; break; case "数据表": dElement.TableName = value; break; case "查找代码": dElement.FindCode = value; break; } } if (string.IsNullOrEmpty(dElement.Type)) { continue; } if (dElement.Type == Matcher.TYPE_RADIO || dElement.Type == Matcher.TYPE_CHECKBOX) { // 若当前参数为radio或checkbox则将其后面出现的所有此类元素作为同一参数 if (uniqueTable.ContainsKey(dElement.ParameterName) == false) { group = new Hashtable(); key = new FillParameterKey(dElement.ParameterName, dElement.Type, dElement.CanAdd, dElement.IsRequired, dElement.SearchString); _parameters.Add(new KeyValuePair <FillParameterKey, object>(key, group)); uniqueTable.Add(dElement.ParameterName, group); } group.Add(dElement.Value, dElement); } else { group = null; key = new FillParameterKey(dElement.ParameterName, dElement.Type, dElement.CanAdd, dElement.IsRequired, dElement.SearchString); key.TableName = dElement.TableName; _parameters.Add(new KeyValuePair <FillParameterKey, object>(key, dElement)); } } uniqueTable.Clear(); } }
private void GetParameters() { Hashtable uniqueTable = new Hashtable(); _parameters.Clear(); string note = ""; Hashtable group = null; Hashtable columnHeader = new Hashtable(); using (Office.Excel.ForwardExcelReader reader = new Office.Excel.ForwardExcelReader(GetParameterFile())) { reader.Open(); Office.Excel.ForwardReadWorksheet sheet = reader.Activate(_urlParameter.LabelName) as Office.Excel.ForwardReadWorksheet; if (sheet == null) { return; } object content = null; if (sheet.ReadNextRow()) { while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); columnHeader.Add(sheet.CurrentCell.ColumnIndex, content == null ? "" : content.ToString()); } } FillParameter dElement; FillParameterKey key; while (sheet.ReadNextRow()) { dElement = new FillParameter(); while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); string value = content == null ? "" : content.ToString(); switch (columnHeader[sheet.CurrentCell.ColumnIndex] as string) { case "元素id": dElement.Id = value; break; case "元素name": dElement.Name = value; break; case "元素value": dElement.Value = value; break; case "元素href": dElement.href = value; break; case "类别": dElement.Type = value == null ? "" : value.ToUpper(); break; case "onclick": dElement.OnClick = value; break; case "参数名称": dElement.ParameterName = value; break; case "备注": note = value; break; case "可新增": dElement.CanAdd = value == "是"; break; case "查找": dElement.SearchString = value; break; case "frameId": dElement.FrameId = value; break; case "数据所在工作表": dElement.TableName = value; break; case "拆分规则": dElement.SplitExpr = value; break; case "可删除": dElement.CanDelete = value == "是"; break; case "模糊匹配": dElement.CanContain = value == "是"; break; case "是否必填": dElement.IsRequired = value == "是"; break; } } if (string.IsNullOrEmpty(dElement.Type)) { continue; } if (dElement.Type == Matcher.TYPE_RADIO || dElement.Type == Matcher.TYPE_CHECKBOX) { // 若当前参数为radio或checkbox则将其后面出现的所有此类元素作为同一参数 if (string.IsNullOrEmpty(dElement.ParameterName) == false && uniqueTable.ContainsKey(dElement.ParameterName) == false) { group = new Hashtable(); key = new FillParameterKey(dElement.ParameterName, dElement.Type, dElement.CanAdd, dElement.IsRequired, dElement.CanDelete, dElement.CanContain, dElement.SearchString); _parameters.Add(new KeyValuePair <FillParameterKey, object>(key, group)); uniqueTable.Add(dElement.ParameterName, group); } //只保存第一个radio或者checkbox参数,在group里面保存全部的信息 group.Add(dElement.Value, dElement); } else { group = null; key = new FillParameterKey(dElement.ParameterName, dElement.Type, dElement.CanAdd, dElement.CanDelete, dElement.IsRequired, dElement.CanContain, dElement.SearchString); key.TableName = dElement.TableName; _parameters.Add(new KeyValuePair <FillParameterKey, object>(key, dElement)); } } uniqueTable.Clear(); } }
private void CollectInfo(string fileName, Hashtable specialParameters, ref int needAddedColumn, ref int lastValueColumnIndex) { try { int valueColumnCount = 0; Hashtable columnHeader = new Hashtable(); using (Office.Excel.ForwardExcelReader reader = new Office.Excel.ForwardExcelReader(fileName)) { reader.Open(); Office.Excel.ForwardReadWorksheet sheet = reader.Activate(1) as Office.Excel.ForwardReadWorksheet; string str = null, key = ""; if (sheet != null) { object header = null; if (sheet.ReadNextRow() && sheet.CurrentRowIndex == 1) { while (sheet.ReadNextCell(false)) { header = sheet.GetContent(); str = header == null ? "" : header.ToString(); if (str == "参数项的值") { lastValueColumnIndex = sheet.CurrentCell.ColumnIndex - 1; valueColumnCount++; } columnHeader.Add(sheet.CurrentCell.ColumnIndex, str); } } object content = null; string allValues = ""; while (sheet.ReadNextRow()) { key = ""; allValues = ""; while (sheet.ReadNextCell(false)) { content = sheet.GetContent(); str = content == null ? "" : content.ToString(); switch (columnHeader[sheet.CurrentCell.ColumnIndex] as string) { case "序号": key = str; break; case "参数项的值": if (string.IsNullOrEmpty(str) == false) { allValues = string.Format("{0}{1}", string.IsNullOrEmpty(allValues) ? "" : string.Format("{0},", allValues), str); } break; } } if (key != null && specialParameters.ContainsKey(key)) { string[] buffer = null; if (allValues.IndexOf(',') >= 0) { buffer = allValues.Split(','); } else if (allValues.IndexOf(',') >= 0) { buffer = allValues.Split(','); } else if (allValues.IndexOf(';') >= 0) { buffer = allValues.Split(';'); } else { continue; } // 保存需要新增的最大列数 int len = buffer.Length - valueColumnCount; needAddedColumn = Math.Max(len, needAddedColumn); } } } } } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.StackTrace + ex.Message); throw; } }