学习笔记-明细EXCEL导入功能
标准单据的EXCEL导入麻烦,而且对于单据的明细行导入不支持,所以二开一种简单复制粘贴的功能,快速实现明细行的导入。 因为产品不支持对剪切板读写功能,所以只能手动从输入框中复制粘贴。
1.新增一个简单的动态表单,用于复制粘贴内容。
a在单据体中增加足够多的列(列不够按照FCOL+数字的标识 继续增加)
b.定义剪切板的识别规则,例如excel的\n换行 \t换格,也可以将换成对接系统的json格式,将文本转换成单据体数据。
c.默认首行为标题行,修改列标题,隐藏多余的列
关键代码
string pasteText =Convert.ToString(this.Model.GetValue("FGETTXT")); string[] lines = pasteText.Trim().Split('\n'); string[] valsa = lines[0].Split('\t'); Entity entity = this.View.BillBusinessInfo.GetEntity("FEntity"); bool havtitle = Convert.ToBoolean(this.Model.GetValue("FHAVETITLE")); bool FISADD = Convert.ToBoolean(this.Model.GetValue("FISADD")); if (!FISADD) { this.View.Model.DeleteEntryData("FEntity"); } int sindex = 0; if (havtitle) { sindex = 1; } int rowcount = this.View.Model.GetEntryRowCount("FEntity"); for (int i = sindex; i < lines.Length; i++) { string[] vals = lines[i].Split('\t'); this.View.Model.CreateNewEntryRow("FEntity"); int j = 1; this.View.Model.SetValue("FCHECK", true, i - sindex+ rowcount); foreach (string tmp in vals) { string ntmp = tmp.Replace("\n", "").Replace(" ", "").Replace("\t", "").Replace("\r", "").Replace("NULL", "").Replace(",", "").Replace(",", ""); this.View.Model.SetValue("FCOL" + j.ToString(), ntmp, i - sindex+ rowcount); j++; } } this.View.UpdateView(); List<EnumItem> valueItem = new List<EnumItem>(); selids = ""; selname = new List<string>(); foreach (var pr in entity.DynamicObjectType.Properties) { if (pr.Name.Contains("FCOL")) { int rindex = Convert.ToInt32(pr.Name.Replace("FCOL", "")); if (rindex > valsa.Length) { this.View.StyleManager.SetVisible(pr.Name, "", false); } else { selids += rindex.ToString() + ","; EnumItem ei= new EnumItem();string coltxtx = rindex.ToString(); if (havtitle) { coltxtx = valsa[rindex - 1]; coltxtx = coltxtx.Replace("\n", "").Replace(" ", "").Replace("\t", "").Replace("\r", "").Replace("NULL", "").Replace(",", "").Replace(",", ""); this.View.GetControl(pr.Name).Text = valsa[rindex - 1]; } ei.Value = rindex.ToString(); ; selname.Add(coltxtx); ei.Caption = new Kingdee.BOS.LocaleValue(coltxtx); valueItem.Add(ei); } } } selids = selids.Substring(0, selids.Length - 1); this.View.GetFieldEditor<ComboFieldEditor>("FMULSEL", 0).SetComboItems(valueItem);
2.在单据中,加入菜单按钮,点击跳转此动态页面,然后对返回值进行处理。可以根据名称匹配自动对应字段
除了从excel中复制,也可以从其他单据中复制单据体。将单据体信息转换成excel格式,然后进行粘贴转换。
没有找到 页面之间的传参方法,只能通过复制的方式。
系统在弹出提示信息的时候,会自动将制表符 转换成空格,所以还是需要一个控件进行复制。
不明觉厉。与星空本身的块粘贴有什么区别?
学习笔记-明细EXCEL导入功能
标准单据的EXCEL导入麻烦,而且对于单据的明细行导入不支持,所以二开一种简单复制粘贴的功能,快速实现明细行的导入。 因为产品不支...
点击下载文档
本文2024-09-16 17:10:55发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-14052.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章