基本信息
源码名称:Aspose.Cells读写Excel或Word,生成PDF文件
源码大小:7.20M
文件格式:.rar
开发语言:C/C++
更新时间:2017-07-26
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍



//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);
    }
   }