以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 导出EXCEL的排版问题2-如何优化 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=44324) |
||||
-- 作者:realredred -- 发布时间:2013/12/27 21:42:00 -- 导出EXCEL的排版问题2-如何优化 这是之前发过的问题 http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=44223&page=0&move=next 经过小甜甜的指引 折騰了一天 弄出了这个來
如今基本达到要求了. 但现在仍存在几个问题 1.因为我是先用字典把要导出的人名集合,再用KEY去把同一人的行,存到臨时表,再用 FOR 在臨时表 一行行加到 XLS表的相应格去. 运行起來,很慢,如果要导出的人数在50人,只导一个月的数据,都花上了半小时.......(这个能,否优化?) 2.现在我只做到是独立的一个人保存一个XLS工作簿,能不能做到保存在一个工作簿里. 每一个人都只能分別保存,想要做到是在一个工作簿,以分页面,分別把各人相关保存. 3.对于一些字节很多的备注,转到XLS超出单元格时,能不能做到自动換行?这个我找了很久帮助都沒找出來. 目标原表 这是效果 期待能优化到. [此贴子已经被作者于2013-12-27 21:45:58编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2013/12/27 22:37:00 -- 算了,我还是不看你的逻辑了,本来想做的,太麻烦。说一下思路。 1、不需要用字典,你可以直接获取到 姓名和工号的,具体看getValues的帮助 Dim arys() As List(Of String()) = DataTables("进度").GetValues(team & "姓名",team & "工号", Filter) 2、不需要临时表,临时表里的内容,直接计算得出,直接赋值给excel表 3、一个book可以有多个sheet,可以新建多个sheet http://www.foxtable.com/help/topics/1465.htm 4、excel中超出单元格,无法换行。
|
||||
-- 作者:realredred -- 发布时间:2013/12/27 22:57:00 -- 新建多个SHEET 这个我试过,但无效. 因为是动态人数,SHEET的个数不确定, 不知具体操作. |
||||
-- 作者:有点甜 -- 发布时间:2013/12/28 20:30:00 -- sheet不需要确定个数,你可以建任意多个sheet的,不信你可以单独做一个例子测试。 |
||||
-- 作者:jianjingmaoyi -- 发布时间:2013/12/28 20:57:00 -- 你这个图片不错 |
||||
-- 作者:realredred -- 发布时间:2013/12/29 20:11:00 -- 我改了用 GetValues 取到人名 不建臨时表 直接赋值到XLS表 但快不了多少(大约快2秒) 这是加入新的导出
多建SHEET 沒头绪..有沒有指引或例子参考?
|
||||
-- 作者:有点甜 -- 发布时间:2013/12/29 20:46:00 -- 不是很简单的么?你用一个循环就行了,参考。 Dim Book As New XLS.Book Dim sheet As XLS.Sheet sheet = book.Sheets(0) sheet.name = "第一个表" sheet = book.Sheets.Add("第二个表") \'写内容 \'写内容 sheet = book.Sheets.Add("第三个表") \'写内容 \'写内容 sheet = book.Sheets.Add("第四个表") \'写内容 \'写内容 book.Save("d:\\test.xls") |
||||
-- 作者:realredred -- 发布时间:2013/12/29 20:57:00 -- 如果人员有40人 那麼 要写40个? |
||||
-- 作者:有点甜 -- 发布时间:2013/12/29 21:01:00 -- 不是可以循环所有的人名的?写在循环里不就行了?只需要写一个 |
||||
-- 作者:realredred -- 发布时间:2013/12/29 22:04:00 -- 开始有头绪了,先试一下 |