excelファイルについて

解決


あ-くん  2020-11-16 17:44:01  No: 149360

お世話になります。
【環境】
Windoows 10 pro
Delphi 10.1 Berlin Enterprise update 2

以上の環境で
以下のようなコーディングでexcelのシート名をListViewに読み込むプログラムを作りました。
開発環境にはMicrosoftのExcelがインストールされているのですが
運用環境にはMicrosoftのExcelがありません。
動作させたところ「クラス文字列が無効です。ProgID: "Excel.Application"」という
エラーが発生しました。
インストールされていないと動作しないのでしょうか。
何か回避方法はありますでしょうか。
*********************************************************************
procedure TfrmTest.Button2Click(Sender: TObject);
var
  item2      : TListItem;
  SampleFile : String;
  excel      : OleVariant;
  book       : OleVariant;
  i          : Integer;
  ws         : Variant;
begin
  if OpenDialog1.Execute then
    convF.Text := OpenDialog1.FileName;

  //ListView2にExcelファイルのシート名をリストアップ(Start)
  System.Variants.DispatchUnsignedAsSigned := True;

  SampleFile := convF.Text;
  try
    excel := CreateOleObject( 'Excel.Application' );
    excel.Application.WindowState := xlMinimized;
    excel.Application.Visible := True;
    book := Excel.WorkBooks.Open(FileName:=SampleFile, ReadOnly:=True);
    try

      ListView2.Clear;

      for i := 1 to book.Worksheets.Count do
      begin
        ws := book.Worksheets[i];
        item2 := ListView2.Items.Add;
        item2.Caption := ws.Name;
      end;

      book.Close(SaveChanges:=False);
    finally
      excel.Quit;
    end;
  except
    on E: Exception do
      MessageDlg(E.Message, mtError, [mbOk], E.HelpContext);
  end;
  //ListView2にExcelファイルのシート名をリストアップ(End)
*********************************************************************


HFUKUSHI  2020-11-16 18:29:24  No: 149361

> インストールされていないと動作しないのでしょうか。
↑のコードはExcelをOLEで起動していますので、Excelがなければ動作しません。

> 何か回避方法はありますでしょうか。
1.Excelを入れる。
2.Excel形式のファイルを読み書きできる何らかのライブラリを使うように変更する。
3.Microsoftの公開しているExcel形式の仕様に従ってファイルを解析して読み込む(たぶん無理)。

2.にはたとえばExcelCreatorのようなものがありますが、基本商用製品だとおもいます。


あ-くん  2020-11-16 18:56:27  No: 149362

HFUKUSHIさん、早々のお返事ありがとうございます。
ExcelCreatorは有償なのですね。
Microsoftから提供されているExcel Viewerでは動作しないのでしょうか?
なんでもお聞きして申し訳ありません。
よろしくお願いいたします。


HFUKUSHI  2020-11-16 18:59:29  No: 149363

> Microsoftから提供されているExcel Viewerでは動作しないのでしょうか?
どうでしょう?試してみるしかないですね。


igy  2020-11-16 21:21:33  No: 149367

使ったことはないのですが、

[ 424_エクセル操作の処理速度比較 ] - Mr.XRAY
http://mrxray.on.coocan.jp/Delphi/plSamples/424_ExcelSpeedTest.htm
では、
> M & I さん作の TXBiff または TXWriteBiff 
が挙げられてますね。


あ-くん  2020-11-19 11:54:51  No: 149380

HFUKUSHIさん、igyさん ご指導いただきましてありがとうございます。
Excel Viewerをインストールしましたが動作しませんでした。

igyさんから教えて頂きましたサイトを見て頑張って作っていたのですが
なかなかできず、時間もないのでExcelを購入する方向で考えています。

今後のことを考えてExcelがなくても動作するアプリが作れるように
落ち着いたら再トライさせていただきます。
今後ともよろしくお願いいたします。
いったん、解決済みとさせていただきます。


HFUKUSHI  2020-11-19 12:45:11  No: 149381

どのようなプログラムをお作りになっているのかはわかりませんが、もし商用ならExcel必須、でいいとおもいます。
Excelなしで動作させるのに必要な労力とExcelを買う費用では普通は釣り合いが取れないですから。
もし商用でないのであれば、Excel形式のファイルを扱うのではなく、CSV/TSV形式などのExcelがなくても問題がないもので作っておいて
それを必要に応じてExcelやLibreOfficeで読み込ませる、というアプローチも考えられます。参考にしてください。


あ-くん  2020-11-19 13:21:27  No: 149382

HFUKUSHIさんアドバイスありがとうございます。
今後ともよろしくお願いいたします。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加