以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 咨询:EXCEL导入时可以指定特定行作为列字段名吗? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=100959) |
-- 作者:jiterp -- 发布时间:2017/5/22 15:10:00 -- 咨询:EXCEL导入时可以指定特定行作为列字段名吗? EXCEL导入时可以指定特定行作为列字段名吗?见下图: |
-- 作者:有点色 -- 发布时间:2017/5/22 15:11:00 -- 导入不行,合并数据可以。
http://www.foxtable.com/webhelp/scr/2334.htm
|
-- 作者:有点色 -- 发布时间:2017/5/22 15:17:00 -- 如果是导入的话,你也可以通过代码创建一个表
http://www.foxtable.com/webhelp/scr/2122.htm
|
-- 作者:jiterp -- 发布时间:2017/5/22 15:52:00 -- 我用的是合并,我看了下帮助代码,合并时可以指定从第几行开行执行,但是要怎么指定列字段标题呢? Dim Book As New XLS.Book("c:\\test\\订单.xls") Dim Sheet As XLS.Sheet = Book.Sheets(0) Tables("订单").StopRedraw() \'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致 Dim nms() As String = {"编号","产品","客户","雇员","单价","折扣","数量","日期"} \'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题 ----- 这里有说明,那我怎么指定第三行为标题列呢? For n As Integer = 1 To Sheet.Rows.Count -1 Dim r As Row = Tables("订单").AddNew() For m As Integer = 0 To nms.Length - 1 r(nms(m)) = Sheet(n,m).Value Next Next Tables("订单").ResumeRedraw() [此贴子已经被作者于2017/5/22 15:52:31编辑过]
|
-- 作者:jiterp -- 发布时间:2017/5/22 15:57:00 -- 下面是我用的导入代码,我想指定EXCEL第三行为标题名,从第四行开始是要导入的数据。这个能实现吗? \'打开窗口选择文件 Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog dlg.Filter= "Excel文件|*.xls|Word文件|*.doc|Access文件|*.mdb" \'设置筛选器 If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮 \'导入数据 Dim mg As New Merger mg.SourcePath = dlg.FileName mg.Format = "excel" \'指定格式 mg.SourceTableName = "Sheet1$" \'指定要合并的表 mg.DataTableName = "订单表" \'指定接收数据的表 mg.FieldMaps.Add("品名","品名") \'前一字段是导入前的字段,后一字段为导入后的字段 mg.FieldMaps.Add("规格","规格") mg.FieldMaps.Add("数量","数量") mg.FieldMaps.Add("单价","单价") mg.Merge() \'开始合并 End If [此贴子已经被作者于2017/5/22 15:58:27编辑过]
|
-- 作者:有点色 -- 发布时间:2017/5/22 16:05:00 -- Dim Book As New XLS.Book("c:\\test\\订单.xls") Dim Sheet As XLS.Sheet = Book.Sheets(0) Tables("订单").StopRedraw() Dim nms1() As String = {"产品","客户","雇员"} Dim nms2() As String = {"表列名产品","表列名客户","表列名雇员"} For n As Integer = 1 To Sheet.Rows.Count -1 Dim r As Row = Tables("订单").AddNew() For i As Integer = 0 To sheet.Cols.Count -1 Dim idx As Integer = array.indexof(nms1, sheet(0,i).Text) If idx >= 0 Then r(nms2(idx)) = sheet(n, i).Text End If Next Next Tables("订单").ResumeRedraw() [此贴子已经被作者于2017/5/22 16:06:00编辑过]
|