实例介绍
	【实例简介】
【实例截图】
【核心代码】
	//Aspose.Cells读取Excel文件
public: bool AsposeCellsReadExcelFileFunc(String^ file, String^ fkzm){
   try
   {
    if (String::IsNullOrWhiteSpace(file))
    {
     return false;
    }
    this->richTextBox1->Text = "";
    int iRow = 2;
    int iCol = 1;
    String^ firstStr;//获取第j行k列单元格的内容
    String^ secondStr;//获取第j行k列单元格的内容
    String^ thirdStr;//获取第j行k列单元格的内容
    String^ fourStr;//获取第j行k列单元格的内容
    try
    {
     if ((fkzm->CompareTo("XLS") == 0) || (fkzm->CompareTo("XLSX") == 0))
     {
      Aspose::Cells::Workbook^ wk = gcnew Aspose::Cells::Workbook();  
      wk->Open(file);//打开Excel文档  
      Aspose::Cells::Worksheet^ sht = wk->Worksheets[0];//查看文档的sheet0内容  
      Aspose::Cells::Cells^ cells = sht->Cells;//获取sheet0的所有单元格  
      if (sht == nullptr)
      {
       return false;
      }
      int rowCount = cells->MaxDataRow   1;//当Excel没有一行数据时,读取到的cells.MaxDataRow=-1,当有一行数据时cells.MaxDataRow=0     MaxDataRow:包含数据的单元格的最大行索引  
      if (rowCount == 0)
      {
       MessageBox::Show("文件内容为空!", "提示", MessageBoxButtons::OK);
       return false;
      }
      int cellCount = cells->MaxDataColumn   1;//当Excel没有一列数据时,读取到的cells.MaxDataColumn=-1,当有一列数据时cells.MaxDataColumn=0     MaxDataColumn:包含数据的单元格的最大列索引  
      try
      {
       iRow = 3;
       iCol = 1;
       firstStr = cells[iRow, 1]->Value->ToString();//获取第j行k列单元格的内容
       while(!String::IsNullOrWhiteSpace(firstStr))
       {
        secondStr = cells[iRow, 2]->Value->ToString();//获取第j行k列单元格的内容
        thirdStr = cells[iRow, 3]->Value->ToString();//获取第j行k列单元格的内容
        fourStr = cells[iRow, 4]->Value->ToString();//获取第j行k列单元格的内容
        this->richTextBox1->Text  = firstStr   "  "   secondStr   "  "   thirdStr   "  "   fourStr   "\n";
        iRow  ;
        if (rowCount <= iRow)
        {
         break;
        }
        firstStr = cells[iRow, 1]->Value->ToString();//获取第j行k列单元格的内容
       }
      }
      catch(Exception^ ex)
      {
       iRow = 1;
       firstStr = cells[iRow, 0]->Value->ToString();//获取第j行k列单元格的内容
       while(!String::IsNullOrWhiteSpace(firstStr))
       {
        secondStr = cells[iRow, 1]->Value->ToString();//获取第j行k列单元格的内容
        thirdStr = cells[iRow, 2]->Value->ToString();//获取第j行k列单元格的内容
        fourStr = cells[iRow, 3]->Value->ToString();//获取第j行k列单元格的内容
        this->richTextBox1->Text  = firstStr   "  "   secondStr   "  "   thirdStr   "  "   fourStr   "\n";
        iRow  ;
        if (rowCount <= iRow)
        {
         break;
        }
        firstStr = cells[iRow, 0]->Value->ToString();//获取第j行k列单元格的内容
       }
      }
      wk->Save(file);
      wk = nullptr;
     }
     else if (fkzm->CompareTo("CSV") == 0)
     {
      Aspose::Cells::Workbook^ wk = gcnew Aspose::Cells::Workbook();  
      wk->Open(file);//打开Excel文档  
      Aspose::Cells::Worksheet^ sht = wk->Worksheets[0];//查看文档的sheet0内容  
      Aspose::Cells::Cells^ cells = sht->Cells;//获取sheet0的所有单元格  
      if (sht == nullptr)
      {
       return false;
      }
      int rowCount = cells->MaxDataRow   1;//当Excel没有一行数据时,读取到的cells.MaxDataRow=-1,当有一行数据时cells.MaxDataRow=0     MaxDataRow:包含数据的单元格的最大行索引  
      if (rowCount == 0)
      {
       MessageBox::Show("文件内容为空!", "提示", MessageBoxButtons::OK);
       return false;
      } 
      int cellCount = cells->MaxDataColumn   1;//当Excel没有一列数据时,读取到的cells.MaxDataColumn=-1,当有一列数据时cells.MaxDataColumn=0     MaxDataColumn:包含数据的单元格的最大列索引  
      //=================================================
      iRow = 1;
      firstStr = cells[iRow, 0]->Value->ToString();//获取第j行k列单元格的内容
      while(!String::IsNullOrWhiteSpace(firstStr))
      {
       secondStr = cells[iRow, 1]->Value->ToString();//获取第j行k列单元格的内容
       thirdStr = cells[iRow, 2]->Value->ToString();//获取第j行k列单元格的内容
       fourStr = cells[iRow, 3]->Value->ToString();//获取第j行k列单元格的内容
       this->richTextBox1->Text  = firstStr   "  "   secondStr   "  "   thirdStr   "  "   fourStr   "\n";
       iRow  ;
       if (rowCount <= iRow)
       {
        break;
       }
       firstStr = cells[iRow, 0]->Value->ToString();//获取第j行k列单元格的内容
      }
      wk->Save(file);
      wk = nullptr;
     }
     return true;
    }
    catch(Exception^ ex)
    {
     MessageBox::Show(ex->StackTrace, "提示", MessageBoxButtons::OK);
    }
   }
   catch(Exception^ ex)
   {
    MessageBox::Show(ex->StackTrace, "提示", MessageBoxButtons::OK);
   }
   return false;
  }
//Aspose.Cells读Excel文档
private: System::Void btnAsposeCellsReadExcel_Click(System::Object^  sender, System::EventArgs^  e) {
    try
    {
     String^ templatePath = System::Windows::Forms::Application::StartupPath   "\\Template";//默认保存路径
     this->openFileDialog1 = gcnew System::Windows::Forms::OpenFileDialog();
     this->openFileDialog1->InitialDirectory = templatePath;
     //this->openFileDialog1->Filter = "Excel文件|*.xls|所有文件|*.xls";
     this->openFileDialog1->Filter = "Excel文件|*.xlsx|Excel文件|*.xls|CSV文件|*.csv";
     this->openFileDialog1->RestoreDirectory = true;
     this->openFileDialog1->FilterIndex = 1;
     if (System::Windows::Forms::DialogResult::OK == this->openFileDialog1->ShowDialog(this))
     {
      String^ readfn = this->openFileDialog1->FileName;
      int iFIndex = readfn->LastIndexOf("\\");
      String^ strfn = readfn->Substring((iFIndex   1));
      iFIndex = strfn->LastIndexOf(".");
      String^ fgs = strfn->Substring((iFIndex   1));
      String^ fkzm = fgs->ToUpper();
      if ((fkzm->CompareTo("XLS") != 0) && (fkzm->CompareTo("XLSX") != 0) && (fkzm->CompareTo("CSV") != 0))
      {
       MessageBox::Show("  打开文件失败,不是有效的文件!", "提示", MessageBoxButtons::OK);
       return;
      }
      //=========================================
      //保存数据到文档
      bool bSuccFlag = AsposeCellsReadExcelFileFunc(readfn, fkzm);
      if(bSuccFlag)
      {
       MessageBox::Show("    读文件成功!", "提示", MessageBoxButtons::OK);
      }
      else
      {
       MessageBox::Show("    读文件失败!", "提示", MessageBoxButtons::OK);
      }
     }
    }
    catch (Exception^ ex)
    {
     MessageBox::Show("    读文件失败!\n\r"   ex->StackTrace, "提示", MessageBoxButtons::OK);
    }
   }
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
 
                 
            

网友评论
我要评论