VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 848|回复: 4

如何对EXCEL文件操作?

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-2-22 15:00:02 | 显示全部楼层 |阅读模式
现有一个EXCEL文件,内容如下:
     a    b
1   10    20
2   2     1
3   15    2
4   100   50
如何把这些东西导入BCB中的表格中呢?
也是按照这个格式做,
最好给个例子
谢谢
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-5-9 13:15:01 | 显示全部楼层

如果是文本格式,自己编程读一行行就可以了。

回复

使用道具 举报

0

主题

11

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-5-11 07:00:01 | 显示全部楼层
我刚给你写了个小例子,你看看,
我给你cpp,可以给我邮件我给你刚写的例子
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
bool TForm1::FromExcelSaveDataSet(AnsiString mFile, TListView *lv)
{
    bool Result;
    Result = false;
    //
    int i,j;
    AnsiString *mstr;
    Variant mExcel_App ;
    Variant WorkBooks;
    Variant WorkBook,Sheet1;
    Variant Range1;
    //
    try
    {
       mExcel_App = CreateOleObject("Excel.Application");
    }
    catch(...)
    {
       ShowMessage("不能创建excel程序,请查看是否安装");
       return false;
    }
    try
    {
        WorkBooks = mExcel_App.OlePropertyGet("WorkBooks");
        WorkBooks.OleProcedure("Open",mFile.c_str());//打开文件
        WorkBook = mExcel_App.OlePropertyGet("ActiveWorkBook");
        WorkBook.OlePropertyGet("Sheets",(Variant)1).OleProcedure("Select"); //sheet 1
        //
        Variant Worksheets = WorkBook.OlePropertyGet("WorkSheets");
        //
        Sheet1 = WorkBook.OlePropertyGet("ActiveSheet"); //获得sheet
        //
        int col,row;
        col = Sheet1.OlePropertyGet("UsedRange").OlePropertyGet("Columns").OlePropertyGet("Count");//列数
        row = Sheet1.OlePropertyGet("UsedRange").OlePropertyGet("Rows").OlePropertyGet("Count");//行数
        col += 1 ;
        //
        for(int temp = 0;temp < col ;temp ++)
        {
            TListColumn *lc = lv->Columns->Add();//->Caption = "序号";
        }
        mstr = new AnsiString[col]; //列数组
        //开始遍历excel
        for(i = 0;i< row+1;i++)
        {
           for(j=1;j <=col;j++)
           {
              mstr[j-1] = Sheet1.OlePropertyGet("Cells",i+1,j);
           }
           //
           TListItem *li = lv->Items->Add();
           li->Caption = mstr[0];
           for (int colTemp = 0 ;colTemp < col-1 ;colTemp ++)
           {
                li->SubItems->Add(mstr[colTemp +1]);
           }
        }
        //关闭
        WorkBook.OleProcedure("Close");
        Result = true;
    }
    __finally
    {
        mExcel_App.OleProcedure("Quit");
        mExcel_App=Unassigned;
        delete []mstr;
    }
    //
    return Result;
}
void __fastcall TForm1::btn1Click(TObject *Sender)
{
    FromExcelSaveDataSet(edt1->Text.Trim() ,lv1 );
}
//---------------------------------------------------------------------------
里面很多东西没优化,你自己写写.
回复

使用道具 举报

0

主题

11

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-5-11 09:45:01 | 显示全部楼层
我是把excel导入到界面上的listview
回复

使用道具 举报

0

主题

27

帖子

24.00

积分

新手上路

Rank: 1

积分
24.00
发表于 2020-5-25 19:00:01 | 显示全部楼层
#ifndef Unit1H
    #define Unit1H
    #include <Classes.hpp>
    #include <ComCtrls.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
      __published:
        TButton *Button1;
        TListView *ListView1;
        void __fastcall Button1Click(TObject *Sender);
      public:       
        __fastcall TForm1(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
////////////////////////////////////////////////////////////////////////////////////
    #include <vcl.h>
    #pragma hdrstop
    #include "Unit1.h"
    #include         <Excel_2k.h>
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner):TForm(Owner)
    {
      ListView1->ViewStyle=vsReport;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      ListView1->Clear();
      ListView1->Columns->Clear();

      WideString theXls;
      theXls=ExtractFilePath(Application->ExeName) +"yourExcel.xls";
      if(!FileExists(theXls)){ShowMessage("当前目录下yourExcel.xls不存在文件");return;}

      TCOM_Application iExcelApp;
      try{iExcelApp=CoExcelApplication::Create();}
      catch(...) {ShowMessage("启动 Excel 出错, 大概是没装Excel");return;}
      //iExcelApp->set_Visible(0,true);

      Workbooks *ibooksPtr;
      iExcelApp->get_Workbooks(&ibooksPtr);
      ibooksPtr->Open(theXls.c_bstr(),
      TNoParam(),TNoParam(),TNoParam(),TNoParam(),
      TNoParam(),TNoParam(),TNoParam(),TNoParam(),
      TNoParam(),TNoParam(),TNoParam(),TNoParam(),
      0);

      _WorksheetPtr isheet;
      isheet=iExcelApp->get_ActiveWorkbook()->get_ActiveSheet();
      long RowCount=isheet->get_UsedRange(1)->Rows->get_Count();
      long ColCount=isheet->get_UsedRange(1)->Columns->get_Count();
                           
      Range* iRangePtr;
      Variant Cell1, Cell2,v;
      AnsiString s;

      for(int k=0;k<ColCount;k++)
      {
        TListColumn  *NewColumn;
        NewColumn = ListView1->Columns->Add();
        NewColumn->Caption = "第"+IntToStr(k)+"列";
      }

      for(int m=0;m<RowCount;m++)
      {
        TListItem* item;
        item=ListView1->Items->Add();
        for(int n=0;n<ColCount;n++)
        {
          Cell1=isheet->Cells->get_Item(TVariant(m+1), TVariant(n+1));
          Cell2=isheet->Cells->get_Item(TVariant(m+1), TVariant(n+1));
          isheet->get_Range(Cell1, Cell2,&iRangePtr);
          iRangePtr->get_Item(TVariant(m+1),TVariant(n+1));
          iRangePtr->Activate();
          v=iRangePtr->get_Value2();
          s=v.operator AnsiString();
          if(n==0)item->Caption=s;
          else item->SubItems->Add(s);
        }
      }

      iRangePtr->Release();
      isheet->Release();
      ibooksPtr->Release();
      iExcelApp->Quit();
    }
    //---------------------------------------------------------------------------
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表