お世話になります。
【環境】
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)
*********************************************************************
> インストールされていないと動作しないのでしょうか。
↑のコードはExcelをOLEで起動していますので、Excelがなければ動作しません。
> 何か回避方法はありますでしょうか。
1.Excelを入れる。
2.Excel形式のファイルを読み書きできる何らかのライブラリを使うように変更する。
3.Microsoftの公開しているExcel形式の仕様に従ってファイルを解析して読み込む(たぶん無理)。
2.にはたとえばExcelCreatorのようなものがありますが、基本商用製品だとおもいます。
HFUKUSHIさん、早々のお返事ありがとうございます。
ExcelCreatorは有償なのですね。
Microsoftから提供されているExcel Viewerでは動作しないのでしょうか?
なんでもお聞きして申し訳ありません。
よろしくお願いいたします。
> Microsoftから提供されているExcel Viewerでは動作しないのでしょうか?
どうでしょう?試してみるしかないですね。
使ったことはないのですが、
[ 424_エクセル操作の処理速度比較 ] - Mr.XRAY
http://mrxray.on.coocan.jp/Delphi/plSamples/424_ExcelSpeedTest.htm
では、
> M & I さん作の TXBiff または TXWriteBiff
が挙げられてますね。
HFUKUSHIさん、igyさん ご指導いただきましてありがとうございます。
Excel Viewerをインストールしましたが動作しませんでした。
igyさんから教えて頂きましたサイトを見て頑張って作っていたのですが
なかなかできず、時間もないのでExcelを購入する方向で考えています。
今後のことを考えてExcelがなくても動作するアプリが作れるように
落ち着いたら再トライさせていただきます。
今後ともよろしくお願いいたします。
いったん、解決済みとさせていただきます。
どのようなプログラムをお作りになっているのかはわかりませんが、もし商用ならExcel必須、でいいとおもいます。
Excelなしで動作させるのに必要な労力とExcelを買う費用では普通は釣り合いが取れないですから。
もし商用でないのであれば、Excel形式のファイルを扱うのではなく、CSV/TSV形式などのExcelがなくても問題がないもので作っておいて
それを必要に応じてExcelやLibreOfficeで読み込ませる、というアプローチも考えられます。参考にしてください。
HFUKUSHIさんアドバイスありがとうございます。
今後ともよろしくお願いいたします。
ツイート | ![]() |