获取本地文件并显示在tableView中,如同QQ中的文件展示,但是还不能查看内容

NSFileManager *fileManager = [NSFileManager defaultManager];
    //在这里获取应用程序Documents文件夹里的文件及文件夹列表
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docDir = [paths objectAtIndex:0];
//    NSLog(@"%@",docDir);
    NSError *error = nil;
    
    _dataFileArray = [[NSArray alloc] init];
    //_dataFileArray便是包含有该文件夹下所有文件的文件名及文件夹名的数组
    _dataFileArray = [fileManager contentsOfDirectoryAtPath:docDir error:&error];
    
    //列出给定一个文件夹里的所有子文件夹名
    NSMutableArray *dirArray = [[NSMutableArray alloc] init];
    BOOL isDir = NO;
    //在上面那段程序中获得的_dataFileArray中列出文件夹名
    for (NSString *file in _dataFileArray) {
        NSString *path = [docDir stringByAppendingPathComponent:file];
        [fileManager fileExistsAtPath:path isDirectory:(&isDir)];
        if (isDir) {
            [dirArray addObject:file];
        }
        isDir = NO;

    }


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return _dataFileArray.count;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 80;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    TaskFileTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"taskFileCell" forIndexPath:indexPath];
    cell.titleLabel.text = [_dataFileArray objectAtIndex:indexPath.row];
    NSArray *strDivision = [cell.titleLabel.text componentsSeparatedByString:@"."];
    NSString *strIntercept = [strDivision lastObject];
    if ([strIntercept isEqualToString:@"plist"]) {
        cell.fileImage.image = [UIImage imageNamed:@"plista.png"];
    }
    if ([strIntercept isEqualToString:@"doc"]) {
        cell.fileImage.image = [UIImage imageNamed:@"doc.png"];
    }
    if ([strIntercept isEqualToString:@"html"]) {
        cell.fileImage.image = [UIImage imageNamed:@"htmlaa.png"];
    }
    if ([strIntercept isEqualToString:@"ppt"]) {
        cell.fileImage.image = [UIImage imageNamed:@"ppt.png"];
    }
    if ([strIntercept isEqualToString:@"rar"]) {
        cell.fileImage.image = [UIImage imageNamed:@"rara.png"];
    }
    if ([strIntercept isEqualToString:@"zip"]) {
        cell.fileImage.image = [UIImage imageNamed:@"zipa"];
    }
    if ([strIntercept isEqualToString:@"xls"]) {
        cell.fileImage.image = [UIImage imageNamed:@"xlsa"];
    }
    if ([strIntercept isEqualToString:@"txt"]) {
        cell.fileImage.image = [UIImage imageNamed:@"txta.png"];
    }
    if ([strIntercept isEqualToString:@"png"] || [strIntercept isEqualToString:@"jpg"]) {
        //获取应用程序Documents文件夹里的文件及文件夹列表
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *docDir = [paths objectAtIndex:0];
        NSString *strRoute = [NSString stringWithFormat:@"%@/%@",docDir,cell.titleLabel.text];
        cell.fileImage.image = [UIImage imageNamed:strRoute];
    }
    
    return cell;
}


注:本文版权归作者所有,转载请注明出处

http://www.jianshu.com/p/a26cf0e316fe


在Qt中,使用C++语言操作Excel文件通常需要借助第三方库,比如`QXLWriter`(用于创建Excel文件)和`libxl`、`pandas`或`xlsxwriter`等(用于读取)。以下是一个基本步骤: 1. **安装依赖库**: - 如果你使用的是Qt Creator,可以在构建环境中添加对这些库的支持。例如,对于`libxl`,可以去其官网下载源码配置。 2. **包含头文件**: ```cpp #include <QFile> #include <QLibrary> #include "libxl.h" ``` 3. **读取Excel文件**: ```cpp QLibrary xlLib("libxl"); // 初始化库 if (!xlLib.load()) { qDebug() << "Failed to load libxl library."; return; } LibXl::Book* book = LibXl::Book_new(); if (!book->load("path_to_your_excel_file.xlsx")) { // 替换为实际路径 qDebug() << "Failed to open Excel file."; return; } const LibXl::Sheet* sheet = book->getSheet(0); // 获取第一个工作表 ``` 4. **解析数据到模型**: 创建一个QStandardItemModel,填充数据。这一步会涉及到遍历Excel表格中的单元格,将内容转换为QStandardItem。 5. **绑定模型到TableView**: ```cpp QStandardItemModel model; // 添加列标题 foreach (const QString& header, sheet->headings()) { QStandardItem item(header); model.setHeaderData(model.columnCount(), Qt::Horizontal, item); } // 将行数据填充到模型 for (int i = 0; i < sheet->lastRowIndex(); ++i) { QVector<QStandardItem*> rowItems; for (int j = 0; j < sheet->lastColIndex(); ++j) { rowItems.append(QStandardItem(sheet->cell(i + 1, j + 1).str())); } model.appendRow(rowItems); } QTreeView tableView; tableView.setModel(&model); ``` 6. **显示数据**: 最后,在窗口中添加这个TableView控件即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值