以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 怎么控制excel插入下面的列 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=119498) |
||||
-- 作者:xxfoxtable -- 发布时间:2018/5/25 20:38:00 -- 怎么控制excel插入下面的列 ![]() ![]() 一次插入画红框那样的四列,foxtable怎么写代码
|
||||
-- 作者:有点蓝 -- 发布时间:2018/5/25 20:53:00 -- 参考:http://www.foxtable.com/webhelp/scr/2334.htm 每四列做一个循环 For n As Integer = 1 To Sheet.Rows.Count -1 For m As Integer = 0 To 2 Dim r As Row = Tables("订单").AddNew() r("第一列") = Sheet(n,0+m*4).Value r("第二列") = Sheet(n,1+m*4).Value r("第三列") = Sheet(n,2+m*4).Value r("第四列") = Sheet(n,3+m*4).Value Next Next |
||||
-- 作者:xxfoxtable -- 发布时间:2018/5/25 21:09:00 -- 我是想插入空列,然后再往里写值,插入空列原因是最右有列合计,不能破坏公式 |
||||
-- 作者:有点蓝 -- 发布时间:2018/5/25 21:16:00 -- 你是想插入值到Execl?还是从Execl取值到狐表? |
||||
-- 作者:xxfoxtable -- 发布时间:2018/5/25 21:20:00 -- 先插入空列,表头合并单元格,再一个单元格一个单元格填数,报表太复杂,没有好办法生成 [此贴子已经被作者于2018/5/25 21:28:24编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2018/5/25 21:37:00 -- Execl无所谓插入空列,也不需要,列就在那里,直接填入数据即可。 先在模板第13列直接设置公式即可
|
||||
-- 作者:xxfoxtable -- 发布时间:2018/5/25 21:40:00 -- 四个列就是一个产品,产品有多少不固定,最右面是列合计,如果不插入,就会破坏最右面的公式,最右面公式部分我没有截图 |
||||
-- 作者:有点蓝 -- 发布时间:2018/5/25 22:00:00 -- 请上传实例,并说明需要的具体的效果 |
||||
-- 作者:xxfoxtable -- 发布时间:2018/5/25 22:37:00 --
[此贴子已经被作者于2018/5/25 22:37:13编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2018/5/25 23:45:00 -- 只保留日期列,其它全部用代码生成,例如: Dim Book As New XLS.Book("D:\\问题\\项目1\\Book1.xlsx") \'定义一个Excel工作簿 Dim Sheet As XLS.Sheet = Book.Sheets(0) \'引用工作簿的第一个工作表 Dim dict As new Dictionary(of String,Integer) Dim lst As List(Of String) = DataTables("表B").GetValues("产品名称") Dim zimu As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" Dim i As Integer = 0 Dim idx As Integer Dim Formula As String = "=" Dim k As Integer Dim km As Integer For i = 0 To lst.Count - 1 idx = i*4+1 k = Math.Floor((idx+2) / 26) - 1 km = (idx+2) Mod 26 \'Output.Show("k=" & k & ", km=" & km) If k< 0 Then Formula &= zimu(km) & "{0}+" Else Formula &= zimu(k) & zimu(km) & "{0}+" End If k = Math.Floor((idx+3) / 26) - 1 km = (idx+3) Mod 26 If k< 0 Then Formula &= zimu(km) & "{0}+" Else Formula &= zimu(k) & zimu(km) & "{0}+" End If dict.Add(lst(i),idx) Sheet(0,idx).Value = lst(i) Sheet(1,idx).Value = "出入库" Sheet(1,idx+1).Value = "库存" Sheet(1,idx+2).Value = "装卸费" Sheet(1,idx+3).Value = "堆存费" Sheet.MergeCell(0,idx,1,4) Next idx = i*4+1 k = Math.Floor(idx / 26) - 1 km = idx Mod 26 If k< 0 Then Formula &= zimu(km) & "{0}+" Else Formula &= zimu(k) & zimu(km) & "{0}+" End If k = Math.Floor((idx+1) / 26) - 1 km = (idx+1) Mod 26 If k< 0 Then Formula &= zimu(km) & "{0}+" Else Formula &= zimu(k) & zimu(km) & "{0}+" End If k = Math.Floor((idx+2) / 26) - 1 km = (idx+2) Mod 26 If k< 0 Then Formula &= zimu(km) & "{0}+" Else Formula &= zimu(k) & zimu(km) & "{0}+" End If Sheet(0,idx).Value = "掏装箱操作费" Sheet.MergeCell(0,idx,2,1) Sheet(0,idx+1).Value = "换标签" Sheet.MergeCell(0,idx+1,2,1) Sheet(0,idx+2).Value = "托盘费" Sheet.MergeCell(0,idx+2,2,1) Sheet(0,idx+3).Value = "仓储合计" Sheet.MergeCell(0,idx+3,2,1) Tables("表B").Sort = "日期" Dim idx2 = 2 Formula = Formula.TrimEnd("+") Output.Show(Formula) For Each r As Row In Tables("表B").Rows Sheet(idx2,0).Value = r("日期") Dim j As Integer = dict(r("产品名称")) Sheet(idx2,j).Value = IIF(r("摘要") = "入库",r("数量"),-1*r("数量")) \'Sheet(idx,j+1).Value = r("库存") Sheet(idx2,j+1).Value = r("装卸费") \'Sheet(idx,j+1).Value = r("堆存费单价")* Sheet(idx2,idx).Value = r("掏装箱操作费") Sheet(idx2,idx+1).Value = r("换标签") Sheet(idx2,idx+2).Value = r("托盘费") Sheet(idx2,idx+3).Formula = Cexp(Formula,idx2+1) idx2 += 1 Next Book.Save("D:\\问题\\项目1\\Book2.xlsx") |