实际项目中,用户上传的Excel文件会包含多个合并单元格,此时在使用getArray()获取区域数据时会出现null值。或者使用getText(i,j)获取合并区域非首个单元格的内容时也会出现null值,但用户其实希望获取合并合并区域的任意一个单元格时都能返回整个合并区域的内容。
针对上述两种情况,在对合并单元格取数时需要进行特定的处理。
(Notice: 使用SpreadJS自动合并不存在上述的两点问题)
1. 获取合并区域任意单元格都返回合并区域的内容
实现思路:判断当前单元格合并信息getSpan是否为null,如果不为null,getSpan()会返回合并区域的起始行(row)、起始列(col)、合并行数(rowCount)、合并列数(colCount),此时需要调用getText(row,col)。若getSpan为null,则说明当前单元格(i,j)没有合并,直接调用getText(i,j)即可。
- function myGetText(sheet,row,col){
- let spanInfo = sheet.getSpan(row,col)
- if(spanInfo){
- return sheet.getText(spanInfo.row,spanInfo.col)
- }else{
- return sheet.getText(row,col)
- }
- }
复制代码 详细代码参考index02.html
2. 合并区域getArray()时null值的处理
实现思路: 首先获取到当前sheet页的所有合并单元格数组,之后依次去给合并区域赋值。
- let spans = sheet.getSpans()
- for(let i=0; i<spans.length; i++){
- let span = spans[i]
- for(let row=span.row; row<span.row+span.rowCount; row++){
- for(let col=span.col; col<span.col+span.colCount; col++){
- sheet.setText(row,col,sheet.getText(span.row,span.col))
- }
- }
- }
复制代码
详细代码参考index.html03
|
|