实现HTML表格导出和导入Excel功能

 

导出Excel流程:
1.调用exportTableData读取导出数据,读取过程,使用JQUERY遍历要导出的表格,读取表格中每个单元格的属性,最后生成导出数据对象,为导出Excel做准备
Javascript 代码
{      
    name: '', //存放导出的Excel文件名      
    widths: [xxx,…,xxx], //各个列的宽度数组      
    data: [   //各行的导出数据      
        {      
            height: xxx,  //本行高度      
            cell: [       //本行各个单元格数据      
                {      
                    range: 'rowSpan.colSpan', //本单元格跨行、跨列的数量      
                    text: '',  //本单元格内容      
                    clazz: ''  //本单元格css类      
                },…{      
                …      
                }      
            ]      
        },…,{      
        }      
    ], …,[      
    …      
    ]      
}  

{   
    name: '', //存放导出的Excel文件名   
    widths: [xxx,…,xxx], //各个列的宽度数组   
    data: [   //各行的导出数据   
        {   
            height: xxx,  //本行高度   
            cell: [       //本行各个单元格数据   
                {   
                    range: 'rowSpan.colSpan', //本单元格跨行、跨列的数量   
                    text: '',  //本单元格内容   
                    clazz: ''  //本单元格css类   
                                },…{   
                                …   
                                }   
                        ]   
        },…,{   
        }   
        ], …,[   
        …   
        ]   
}
在这个导出数据对象中,首先设置导出文件的文件名和各列的宽度数组,然后是存放行数据的数组。读取各列宽度是通过读取colHTML元素实现的,所以要求表格中必须设置col元素
行数据包括本行的高度,以及行中单元格数据的数组,因为有跨行的关系,各行存放的单元格的数量可能是不一样的。
单元格数据包括:单元格的跨行、跨列属性,这个属性不是必须的,如果单元格只是跨一行、一列,这个属性可以不设置,然后是单元格的内容,单元格的CSS类风格,这个属性比较重要,要求必须设置,这样在导出的Excel数据中,才能确定该单元格应用那种风格属性。
在读取导出数据过程中,提供回调函数,可以让你对导出的单元格数据值进行修改,例如,有的单元格的内容是个按钮,那么可以控制导出的值为空字符串
回调函数形式如下:
Javascript代码
callback: function(tr, td, row, col, val) {   
    if (val.indexOf('button') >= 0)   
        return '';   
    else  
        return val;   
}  

callback: function(tr, td, row, col, val) {
        if (val.indexOf('button') >= 0)
                return '';
        else
                return val;
}
2.对数据对象编码成JSON字符串,这里是通过json.js提供的编码函数实现的。然后提交给后台处理

3.后台通过编写了一个servlet实现数据分析和生成EXCEl,在这里使用了JSON-LIB提供的工具读取JSON字符串

4.后台实现:
为了能够在EXCEL中应用表格的各种CSS 效果,定义了ExcelCSS类,存放Excel能够支持的CSS风格,并且在ExcelOperate中定义了一些CSS样式,CSS样式的名称与单元格中的class属性名称是相同的。当然,以后也可以改成使用配置文件去定义可用的CSS样式
另外,在Excel中,对于Css相同的的单元格,可以共享同一个HSSFCellStyle样式,所以,通过定义
Java代码
Map<String, ExcelCss> cssMap = new HashMap<String, ExcelCss>()  

Map<String, ExcelCss> cssMap = new HashMap<String, ExcelCss>()实现共享 功能
针对单元格跨行、跨列情况,通过定义一个包含所有行、列的二维数组
Java代码
HSSFCellStyle[][] placeholder = new HSSFCellStyle[rows][cols]  

HSSFCellStyle[][] placeholder = new HSSFCellStyle[rows][cols]
写单元格以前,首先检查当前行,当前位置是否已经有单元格设置的HSSFCellStyle值,如果有,则向后搜索未设置值的位置,把这个位置作为要写入的单元格位置
写完单元格数据后,如果单元格跨行、跨列,则会在数组中该单元格占据的所有位置设置该单元格的HSSFCellStyle值,并移动下一个插入位置的列值
最后,把生成的EXCEL数据写入输出流
到软件公司学 IT 技术 http://www.tsp2c.cn/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一些相关的参考信息。 1. 数据导出 首先需要引入jxl相关的jar包,然后创建一个Excel文件并设置列名和数据,最后将数据写入Excel文件中即可。 示例代码如下: ```java // 定义Excel文件名和工作表名 String fileName = "example.xls"; String sheetName = "Sheet1"; // 创建Excel文件 WritableWorkbook workbook = Workbook.createWorkbook(new File(fileName)); WritableSheet sheet = workbook.createSheet(sheetName, 0); // 设置列名 Label label = new Label(0, 0, "姓名"); sheet.addCell(label); label = new Label(1, 0, "年龄"); sheet.addCell(label); // 设置数据 for (int i = 0; i < dataList.size(); i++) { Map<String, Object> data = dataList.get(i); label = new Label(0, i + 1, data.get("name").toString()); sheet.addCell(label); label = new Label(1, i + 1, data.get("age").toString()); sheet.addCell(label); } // 写入Excel文件 workbook.write(); workbook.close(); ``` 2. 数据导入 需要引入cos相关的jar包,然后读取Excel文件中的数据并进行处理。 示例代码如下: ```java // 定义Excel文件名和工作表名 String fileName = "example.xls"; String sheetName = "Sheet1"; // 读取Excel文件 Workbook workbook = Workbook.getWorkbook(new File(fileName)); Sheet sheet = workbook.getSheet(sheetName); // 获取数据 List<Map<String, Object>> dataList = new ArrayList<>(); for (int i = 1; i < sheet.getRows(); i++) { Map<String, Object> data = new HashMap<>(); data.put("name", sheet.getCell(0, i).getContents()); data.put("age", sheet.getCell(1, i).getContents()); dataList.add(data); } // 处理数据 for (int i = 0; i < dataList.size(); i++) { // TODO: 对数据进行处理或存储 } // 关闭Excel文件 workbook.close(); ``` 以上是一个基本的使用jxl实现Excel表格的数据导入导出的示例代码,希望对您有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值