CoreXLSX 获取xlsx文件数据

git地址
使用说明介绍

首先自己导入

/// 获取xlsx类型文件信息
    /// - Parameter fileName: 文件名
    /// - Returns: 返回所有信息数组  层级为:所有文件的所有信息->一个文件(xlsx文件)的所有信息->一个工作表(sheet)的所有信息->一行的信息->[第几行,第几列,行的信息,列的信息]
    @objc func GetXLSXFileInfo(fileName:String) -> NSArray {
        /**
        1.如果是程序打包时的文件,可通过
         let path = Bundle.main.path(
             forResource: fileName,//注意这个fileName不能带后缀啊
             ofType: "xlsx"
         ) ?? ""  获取文件路径
         2.如果是通过UIDocumentPickerViewController获取的文件,可通过
         var pathDocuments =  NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)[0];
         pathDocuments = pathDocuments + "/" + fileName;
         获取,不能直接使用func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {}中的URL(这个是选择文件之后的回调方法),因为
         这个URL(如:file:///private/var/mobile/Containers/Data/Application/FA5F8E01-522F-4657-B896-F4C555477F06/Documents/1111.xlsx)包含前缀file:///private,会导致获取不到文件
         最终使用的路径应该是如:/var/mobile/Containers/Data/Application/FA5F8E01-522F-4657-B896-F4C555477F06/Documents/1111.xlsx这种样式
         */

        var pathDocuments =  NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)[0];
        pathDocuments = pathDocuments + "/" + fileName;
        
        if pathDocuments.hasSuffix("xlsx"){
            
            guard let file = XLSXFile(filepath: pathDocuments) else{
                return []
            }
            
            let allInfoArr = NSMutableArray.init();//所有文件的所有信息
            let parseBooks = try? file.parseWorkbooks();//所有文件数组,一般都是一个文件所以返回的是一个内容的数组
            for wbk in parseBooks ?? []{
                let oneBookInfo = NSMutableArray.init();//一个文件的所有信息
                for (name, path) in try! file.parseWorksheetPathsAndNames(workbook: wbk) {
                    if let worksheetName = name {
                        print("This worksheet has a name: \(worksheetName)")
                    }
                    let oneWorksheetInfo = NSMutableArray.init();//一个文件中一个工作表的所有信息
                    let worksheet = try! file.parseWorksheet(at: path)
                    let parseSharedStrings = try? file.parseSharedStrings();
                    /**
                     一行一行 将所有数据解析出来
                     先获取所有行rows
                     然后获取每一行的所有单元格cells
                     然后转换获取数据
                     */
                    let worksheet_rows:[Row] = worksheet.data!.rows;
                    var rowNumber = 0;//第几行
                    var rowText = "";//第几行对应的文字
                    var columnNumber = 0;//第几列
                    var columnText = "";//第几列对应的文字
                   
                    for subRow in worksheet_rows {
                        let oneRowInfo = NSMutableArray.init();//一个文件中一个工作表其中一行的所有信息
                        columnNumber = Int(subRow.reference);//第几列
                        for subCell in subRow.cells {
                            rowNumber = Int(subCell.reference.row);//第几行
                            rowText = subCell.stringValue(parseSharedStrings!) ?? "";//第几行对应的文字
                            columnText = subCell.reference.column.value;//第几列对应的文字
                            columnNumber = Int(subCell.reference.column.intValue);//第几列 需要将intValue改为public,否则无法获取
                            print("第"+String(rowNumber)+"行:" + "  第" + String(columnNumber)+"列:" + "   行信息:" + rowText + "   列信息:" + columnText);
                            
                            //第几行 第几列 行的信息  列的信息
                            oneRowInfo.add([String(rowNumber),String(columnNumber),rowText,columnText]);
                        }
                        oneWorksheetInfo.add(oneRowInfo);
                    }
                    oneBookInfo.add(oneWorksheetInfo);
                }
                allInfoArr.add(oneBookInfo);
            }
            return allInfoArr;
        }else{
            // 文件格式不对
            //文件格式只能是xlsx!
            return [];
        }
    }

**注意:**需要将Cell.reference.column.intValue改为public,否则无法获取intValue,导致columnNumber无法及时更新,不用的话可以不修改。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JMeter是一个功能强大的性能测试工具,可以模拟并发用户,对服务器和网络进行压力测试。虽然JMeter主要用于测试Web应用程序,但也可以用来测试其他类型的应用程序,如接口、数据库等。 要获取Excel(xlsx)表格数据,需要使用JMeter的CSV数据集配置元件。步骤如下: 1. 打开JMeter并创建一个新的测试计划。 2. 在测试计划上右击,选择"添加" -> "配置元件" -> "CSV数据集"。 3. 在CSV数据集的"文件名(或变量名)"字段中输入Excel文件的路径。确保文件路径是正确的,并且JMeter可以访问该文件。 4. 在"变量名称"字段中输入一个变量名称,并在测试中引用这个变量来获取Excel表格的数据。 5. 在CSV数据集的"分隔符"字段中输入Excel表格中的分隔符。常用的分隔符是逗号(,)。 6. 在CSV数据集的"循环控制器"字段中选择循环方式,例如"All Threads"表示所有线程都将使用同一行数据。 7. 如果需要,可以在CSV数据集的其他字段中设置更多高级配置选项。 8. 单击"保存"按钮,保存配置。 9. 在测试计划中添加一个线程组,并在线程组中添加一个HTTP请求。 10. 使用${variable_name}的形式在请求中引用变量,该变量将获取来自Excel表格的数据。 11. 运行测试计划,JMeter将根据配置从Excel表格中获取数据,并将其应用于测试中的请求。 通过以上步骤,您可以在JMeter中使用CSV数据集配置元件来获取Excel(xlsx)表格数据。这将使您能够在性能测试中使用更丰富的数据集,并更好地模拟真实世界的用户行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值