問題タブ [excel-interop]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Excel 関数のインスタンス化
C#アプリケーション内でExcel関数を使用する方法を探しているところはどこでも、次のことを行うように指示されています。
- [COM] タブから次の using ステートメントを追加します:using IExcel = Microsoft.Office.Interop.Excel
- 次に、IWorkSheetFunction objectIExcel.IWorksheetFunction iwf = new IExcel.IWorksheetFunction(); を宣言して初期化します。
- int result = iwf.Math.Sum(1,2); のように関数を使用できるようになりました。
私が抱えている問題は、インテリセンスが IExcel を検出している間、IWorksheetFunction が表示されないことです。ただし、WorksheetFunction が表示されています。いずれにせよ、それをオブジェクトとしてインスタンス化することはできません。エラーが表示されます: 抽象クラスまたはインターフェイス 'Microsoft.Office.Interop.Excel.WorksheetFunction' のインスタンスを作成できません
何か案は?
c# - Excel ワークシートで選択されているセルを見つけるにはどうすればよいですか?
ワークブック/ワークシートでどのセルが選択されているかを判断するには、C# と Excel の相互運用機能を使用できる必要があります。Excel で次のような定義があればいいのですが。
c# - C#は相互運用式のドラッグに優れています
私はC#Excel相互運用フレームワークを使用して、会社の一連のレポートを自動生成しています。これを使用して方程式をドラッグする方法を誰かが知っているかどうか疑問に思っています。
名前付き範囲でこれを行うことができれば、これはさらに良いでしょうが、行をハードコーディングしてA10:J10からA20:J20までのドラッグラインに沿って配置する必要がある場合でも、これはおそらく問題ありません。
これを行う方法を説明しているWebページへのポインタでさえ、私はこれに固執しているので、非常にありがたいです。
ありがとう!
c# - Excel 行の削除 間違った行を削除する
このコードは、指定した範囲内のすべての行を取得し、セル DATA を含まない行のみを削除することになっています。ただし、実際には範囲内のすべての行を削除しています。なんで?
.net - System.Runtime.InteropServices.COMException (0x800A03EC)
Microsoft.Office.Interop.Excel.WorkbookClass.SaveAs()
メソッドは、Windows server 2003 および XP でも正常に動作しますが、Windows server 2008 では動作しません。すべての Dll と権限が与えられているので、コピーしました
Culture 設定や DCOM 権限など、ネットで提供されているすべてのソリューションも試しました。
次のエラーを取得:
System.Runtime.InteropServices.COMException (0x800A03EC): HRESULT からの例外: 0x800A03EC
で
Microsoft.Office.Interop.Excel.WorkbookClass.SaveAs(オブジェクト ファイル名、オブジェクト FileFormat、オブジェクト パスワード、オブジェクト WriteResPassword、オブジェクト ReadOnlyRecommended、オブジェクト CreateBackup、XlSaveAsAccessMode AccessMode、オブジェクト ConflictResolution、オブジェクト AddToMru、オブジェクト TextCodepage、オブジェクト TextVisualLayout、オブジェクト ローカル)
助けてください ..!
c# - Excel 相互運用ファイルの名前変更
Excel 相互運用ルーチンを使用して、Excel テンプレートに基づいて一連のレポートを生成するプログラムがあります。
これはすべて問題なく機能しますが、私が把握しようとしている副作用は、ユーザーが元のテンプレートを上書きするのを防ぐ方法です。
私の知る限り、テンプレートはイントラネット上にあり、すべてのユーザーが読み書きできる場所にある必要があります。(アーカイブの場合、ユーザーが実行するアプリケーションは新しいデータでそれを埋めることができません)
ファイルの名前を変更してネットワーク上の別の場所に移動することでこれに対処しようと考えていましたが、これが可能かどうかはわかりません. (したがって、スレッドの名前)
また、私が思いもよらなかった問題に対処するためのさらに良い方法があるかもしれません。
excel - Excelの相互運用-Excel::Application::Selectionの種類を取得する
Excelで何かを選択すると、Excel :: Application::Selectionプロパティに選択したオブジェクトが含まれます。たとえば、セルを選択した場合、次を使用してそれらをExcel::Rangeに簡単にキャストできます。
ここで、Excel = Microsoft.Office.Interop.Excel
いくつかの画像を選択したら、それをExcel :: Pictureにキャストし、次にExcel :: Shapeにキャストする必要がありますが、一部の形状の場合は、楕円形、長方形など、形状ごとに異なるインターフェイスがあるようです。すべてを削除する必要があります。ワークシートでが選択されています。そのセルの場合、コンテンツはクリアされ、Picture、Shape、またはOLEObjectは削除されますが、問題は、すべてのインターフェイスをチェックしたくないということです。
すべてのShapes/Picturesをキャストして、それらに対してdeleteを呼び出すことができるベースインターフェイスが1つだけあればいいのにと思います。
取得することは可能ですか:
- Application::Selection内の実際のタイプ-System::COMObjectは表示されますが、実際のタイプに関する情報は表示されません
- どういうわけか、Selectionに画像/形状などが含まれていることを識別し、基になるタイプで「Delete」メソッドを呼び出します
.net - Office 2003 の相互運用性は Windows Server 2008 でサポートされていますか?
Windows Server 2008 で相互運用依存プログラムを実行しようとすると、Win Server 2003 および XP で正常に実行されますが、以下のエラーが発生します。
System.Runtime.InteropServices.COMException (0x800A03EC): HRESULT からの例外: Microsoft.Office.Interop.Excel.WorkbookClass.SaveAs(.......) での 0x800A03EC
Microsoft によると、Windows Server 2008 はサポートされている OS のリストに含まれていません。
システム要求
サポートされているオペレーティング システム:Windows 2000 Service Pack 3;Windows Server 2003;Windows XP
誰でもこれを確認できますか..誰か試しましたか..?
multithreading - Windowsアプリ。スレッド中止の問題
私は、ファイルウォッチャーによって監視されているフォルダーに配置されたファイルに基づいて特定の決定を行う必要があるアプリケーションに取り組んでいます。
この意思決定プロセスの一部には、ファイルを別のフォルダーに移動して処理する前に、ファイルの名前を変更することが含まれます。
さまざまなサイズのファイルを処理しているため、別のスレッドでファイルをチェックして、ファイルが「使用可能」であるかどうかを確認し、ファイルが発生するとイベントを発生させるオブジェクトを作成しました。
この利用可能なイベント内から名前変更コードを実行すると、機能します。
私が遭遇している問題は、拡張子がソースファイルと異なり、ファイルの名前が変更されている場合、変換のタイプに基づいてファクトリオブジェクトを返し、それに応じてファイルを変換する変換ファクトリを呼び出していることです。名前の変更を行います。単体テストでその特定のコードを実行すると、それが機能し、ファクトリオブジェクトが返され、変換が正しく行われます。
しかし、私がプロセス内でそれを実行すると、私は立ち上がる...
.xlsまたは.xlsxを.csvに変換する際に、「スレッドが中止されました」というエラーが発生します。
何かご意見は?
アップデート:
アプリケーションが現在どのように機能するかについて、もう少し情報とマップがあります。
- FSWを実行しているクライアントアプリケーション
- OnFileCreatedイベントファイルのパスを渡すFileObjectを作成します。
構築時にファイルが検証されます。ファイルが存在する場合はtrueの場合、
/li>AvailableCheckメソッドは、リーダーが作成されるか、試行回数がタイムアウトするまで、ファイルに対してストリームリーダーを繰り返し開こうとします。リーダーが開かれている場合は、FileAvailableイベントが発生し、開かれていない場合は、FileUnAvailableイベントが発生し、イベントに戻ります。
クライアントアプリケーションは、FSWのOncreatedイベント内からこれらのイベントをキャッチするように配線されています。
- 次に、OnFileAvailableメソッドは、Excelの相互運用機能呼び出しを含む名前変更機能を呼び出します。
- ファイルの名前が変更されている場合(変換されていない場合、拡張子は同じままです)、名前を古いファイル名から新しいファイル名に変更するために移動し、変換されている場合は、正しいタイプの変換を返す変換ファクトリオブジェクトを実行しますソースファイルの拡張子と宛先ファイル名に基づきます。
- 単純な名前変更の場合は、問題なく機能します。変換(ファクトリの一部として返されるXLSからCSVオブジェクト)の場合、最初に行うことは、新しいアプリケーションオブジェクトを作成することです。ここで、アプリケーションが爆撃されます。
スレッドの外部でファクトリと変換/名前変更プロセスをテストし、それ自体の単体テストでプロセスが問題なく機能する場合。
アップデート:
これを実行して、スレッド内でExcel相互運用機能をテストしました。
そして、アプリケーションがインストールされている行で、「タイプ'System.Threading.ThreadAbortException'の最初のチャンスの例外」エラーが発生しました。
だから私は付け加えた。
スレッドのインスタンス化後、スレッド開始呼び出しの前でも、同じエラーが発生します。デザインを考え直さなければならないという考えが浮かびます。
excel - Setup that selects automation server (written in .NET) in excel
We have some excel formulas written in .NET and exposed to Excel via COM. The user who wants use our formulas have to:
- run some bat file that registers dll's into COM (using RegAsm)
- then in Excel (2010) select File|Options|Add-ins|Excel Add-ins|Automation|Select our server|GO|GO
We want to avoid the (2.) using some automatic setup. Does anybody have any idea how it can be accomplished?
Thanks in advance.