处理excel!!!

wjn161 2010-02-28 08:39:45


excel的格式如上图,需求是把它读到页面上,然后用户可以随意编辑,包括表头,最后导出到客户端。
主要问题有3个,
1:怎么读入这种不规则的excel?是不是遍历一遍,然后一个单元格一个单元格的内容去画么?
2:用户需要编辑表头,比如 “上年累计”,用户需要把它变成“上季度累计 ”或者其他条件,那么对应的数据需要从数据库(sqlserver)里面读取,然后填入该表格中,最后导出到客户端。其他的表头也需要用样的功能,这个要怎么实现?
3:导出的时候我记得这种不规则的好像也是要自己用代码控制单元格的样式吧~?有没有好的方法?

我找了个aspose.cells,还在研究文档,这些需求实在不知道要怎么弄,时间比较紧,最高只能给出200分了,如果分不够还可以开贴加,请大家帮帮忙~!谢谢啦~
...全文
165 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanjinkai 2010-03-01
  • 打赏
  • 举报
回复
如果导出的话!你可以先做一个空表格式放到程序中! 当导出,先将早准备好的 格式空文件复制到目标处 然后 根据 每个单元格便利 输出 保存 就OK 了,就不用自己手动去绘制表格了
wjn161 2010-03-01
  • 打赏
  • 举报
回复
引用 8 楼 rememberhai 的回复:
用流的形式来实现。你可以试下
例子:function htmlToExcel(elTableOut,elDiv){ 
    try{
  //设置table的border=1,否则在excel里看不到表格线
        elTableOut.border = 1;
        var oRangeRef = document.body.createTextRange(); 
        oRangeRef.moveToElementText( elDiv ); 
        oRangeRef.execCommand("Copy"); 
         
        var oXL = new ActiveXObject("Excel.Application"); 
        var oWB = oXL.Workbooks.Add ; 
        var oSheet = oWB.ActiveSheet ; 
        oSheet.Paste(); 
        oSheet.Cells.NumberFormatLocal = "@"; 
        oSheet.Columns("D:D").Select; 
        oXL.Selection.ColumnWidth = 20;
        oXL.Visible = true;       
        oSheet = null; 
        oWB = null; 
        appExcel = null;
  //设置回table的border=0,否则页面表格线会加粗
  elTableOut.border = 0;
    }catch(e){ 
        alert(e.description) 
    }


好像还是不行


我现在唯一的想法就是自己手动的去画表格,然后把数据填进去,这样好像根本不对!
rememberhai 2010-03-01
  • 打赏
  • 举报
回复
用流的形式来实现。你可以试下
例子:function htmlToExcel(elTableOut,elDiv){
try{
//设置table的border=1,否则在excel里看不到表格线
elTableOut.border = 1;
var oRangeRef = document.body.createTextRange();
oRangeRef.moveToElementText( elDiv );
oRangeRef.execCommand("Copy");

var oXL = new ActiveXObject("Excel.Application");
var oWB = oXL.Workbooks.Add ;
var oSheet = oWB.ActiveSheet ;
oSheet.Paste();
oSheet.Cells.NumberFormatLocal = "@";
oSheet.Columns("D:D").Select;
oXL.Selection.ColumnWidth = 20;
oXL.Visible = true;
oSheet = null;
oWB = null;
appExcel = null;
//设置回table的border=0,否则页面表格线会加粗
elTableOut.border = 0;
}catch(e){
alert(e.description)
}
Jelly_tracy 2010-03-01
  • 打赏
  • 举报
回复
收藏,期待楼主解决啊 啊
读易的庄稼人 2010-03-01
  • 打赏
  • 举报
回复
帮顶...........................................................................
wjn161 2010-02-28
  • 打赏
  • 举报
回复
顶起来!(字数补丁.exe)
wjn161 2010-02-28
  • 打赏
  • 举报
回复
引用 1 楼 jason_dct 的回复:
VSTO 的Excel07.
完全可以实现。
直接遍历行


有没有好的资料或者文档提供。谢谢~
lovezhxf 2010-02-28
  • 打赏
  • 举报
回复
关注 。。。帮顶。。
wuyq11 2010-02-28
  • 打赏
  • 举报
回复
使用报表控件如fast report结合XML序列化实现
有个选举系统据实现这样的表格
段传涛 2010-02-28
  • 打赏
  • 举报
回复
VSTO 的Excel07.
完全可以实现。
直接遍历行

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧