問題タブ [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# - C#を使用してHTMLテーブルをExcelシートに変換する
Microsoft.Office.Interop.Outlook.MailItem 本体に html テーブルがあり、デスクトップ アプリケーション用の C# を使用して、このテーブルを Excel シートに入力するだけです。この点で誰かが私を助けることができますか?ありがとう
c# - Excel相互運用機能でプログラムをスケジュールできません
Excel Interopを使用するコンソールプログラムをC#.NETで開発しました。このプログラムは、コマンドラインから実行した場合、開発マシンとWindowsServer2008で問題なく動作します。
タスクを毎日実行するようにスケジュールしようとすると、この厄介な相互運用エラーが発生しました。
ファイル'e:\ excel.xls'が存在し、プログラムの開始時に完全に閉じられた場合、コマンドラインで同じプログラムを実行しようとすると、期待どおりに終了したためです。
また、管理者として実行するようにタスクを設定したので、権限の問題ではないはずです。
手伝って頂けますか?
c# - 生成された Excel ファイルで複数の選択肢を提供する方法
私は、ユーザーが学校の成績に関する情報を入力する必要がある一連の Excel ファイルを生成するアプリケーションに取り組んでいます。セクションの 1 つは、ユーザーが 3 つの選択肢から値を入力することを要求します。
これを ActiveX ラジオ ボタンで行うのは理にかなっていると思いました。ただし、これらのコントロールを使用するとファイルのサイズが大幅に増加し、ファイルを開くときに応答しなくなることに気付きました。必要な情報の量に応じて、数百から千のラジオ ボタンがあることに注意してください。
これに対する代替アプローチに関するアドバイスやアイデアはありますか? ファイル サイズを小さく保ち、応答性を向上させるために、古いフォーム コントロール (非 ActiveX) を使用することは役に立ちますか? それとも、後の段階で Excel ファイルとユーザーの入力も読み取る必要があることを考えると、古いコントロールを操作するための十分なオプションがないのでしょうか?
FWIW、次のコードを使用して新しいラジオボタンを作成しています:
c# - Excel 相互運用性: Excel アプリケーション インスタンスを終了すると、テストが失敗しますか?
Excel Interop の使用をカプセル化して、再利用可能なライブラリで使いやすくしたいと考えています。
これまでのところ、完全にうまく機能するいくつかのテストを作成しましたが、各テスト間で Excel を強制的に終了させて、削除できるようにするためにテスト ファイルを処理しないようにしています。
各テストの後にアプリケーション インスタンスを終了すると、Excel が応答しなくなったようで、Windows が表示されます。
「Excel が動作を停止し、解決策を探しています」
メッセージ。このメッセージは数秒間続きます。その間、Excel が閉じているため、ファイルのハングが発生し、テストで次のような例外がスローされます。
「別のプロセスで使用されているため、ファイルにアクセスできません...」
メッセージ。それ以外の場合、各テストは個別に正常に実行されます!
この問題を解決する方法の手がかりはありますか?
ApplicationClass.Quit()
メソッドを使いすぎていませんか?
テストが完了してから Excel を終了すると、テスト用に作成されたファイルが削除できなくなります。
ありがとう!=)
excel - set_Valueを使用してC#からExcelにデータをダンプすると、エラーがスローされます
データをExcelファイルにダンプしようとしています。以下は、私たちが使用するコードです。
注:dtは、別の関数から渡されたDataTableです。
例外をスローします
HRESULTからの例外:0x800A03EC
ラインで
Excelファイルは部分的に入力されています。この値をmyArrayからExcelにコピーしようとすると、例外が発生します。
Enawvg Xnhe / Bcrengvbaf / Ubzr Bssvpr / ZnkArjLbexYvsr 10-02-2009 09:39 NZ Gb PPEC / Bcrengvbaf / Ubzr Bssvpr / ZnkArjLbexYvsr @ ZnkArjLbexYvsr pp
Fhowrpg Sj:cyf vagvngr ershaq
紫外線、
cyrnfr svaq gur pbeerpg cbyvpl ahzore
268538840
Enawvg Xnhe
----- Sbejneqrq ol Enawvg Xnhe / Bcrengvbaf / Ubzr Bssvpr / ZnkArjLbexYvsr ba 02/10/2009 09:38 NZ ----- PPEC / Bcrengvbaf / Ubzr Bssvpr / ZnkArjLbexYvsr 02/09/2009 05:37 Xnhe / Bcrengvbaf / Ubzr Bssvpr / ZnkArjLbexYvsr @ ZnkArjLbexYvsr pp
Fhowrpg Er:cyf vagvngr ershaq
紫外線
Gunax lbh sbe jevgvat gb Phfgbzre Freivprf ng Znk Arj LbexYvsrVafhenapr。
Jr npxabjyrqtr gur erprvcg bs lbhe inyhnoyr srrqonpx naq bhe Phfgbzre Freivpr Rkrphgvir jvyy trg va gbhpu jvgu lbh va gur arkg48ubhef。
Cyrnfr abgr gung gur ersrerapr ahzore sbe lbhe srrqonpx ner
268538295 2141982 268598840vapbeerpgab。
Jr erdhrfg lbh gb dhbgr gur nobir ahzore va nyy shgher pbzzhavpngvba jvguZALYercerfragngvirf。
Lbh znl nyfb trg va gbhpu jvgu bhe Phfgbzre Uryc Yvar ahzore 1800 180 5577(gbyy serr vs pnyyvat sebz ZGAY be OFAY argjbex)be 0124-2542001
Gunaxf naq Ertneqf Xnenz Fvatu Phfgbzre Freivprf Znk Arj Lbex YvsrVafhenaprPb。Ygq。Bcrengvba Pragre、CybgAb。--90 N Frpgbe-18、Hqlbt Ivune Thetnba-122002 Gry-0124-2542001 Gbyy Serr-1800-180-5577 Snk ahzore-0124-4239683
Enawvg Xnhe / Bcrengvbaf / Ubzr Bssvpr / ZnkArjLbexYvsr 09-02-2009 03:07 CZ Gb PPEC / Bcrengvbaf / Ubzr Bssvpr / ZnkArjLbexYvsr @ ZnkArjLbexYvsr pp
Fhowrpg cyf vagvngr ershaq
紫外線、
cyf ybt n serfu pnfr
ershaq purdhr abg erprvirq
268538295 268598840
Enawvg Xnhe
なぜエラーをスローするのですか?set_Valueに既知の問題はありますか?
リンク1でここに説明されている次の2つのオプションを試しました
どんな提案やアドバイスも大歓迎です!ありがとう!
編集
このコードは、Microsoft Office Excel 2007SP2を使用すると完全に正常に機能します。
失敗するMicrosoftOfficeExcel 2003のバージョン/SPは、これが標準リリースです(SPがインストールされていません)。
c# - ac#オブジェクトをExcelワークシートに添付し、ブックの保存時に保存する方法
私はc#でExcelアドインを作成しています。アドインでは、ユーザーが「クエリ」オブジェクトを作成し、クエリが実行され、データがExcelで表示されます。'query'オブジェクトを保存し、ワークシートを指定してそれをフェッチして、編集してクエリを再実行できるようにしたい。
私は次の可能性を見つけました:
これにより、クエリが文字列として保存されます(オブジェクトをシリアル化した後)。クエリをワークシートに接続する方法がまだ必要です。シート名を使用してみました。これに関する問題は、シート名が変更される可能性があることです。だから私の質問は:
- ワークシートの一意の識別子を取得する方法はありますか?
- 私がやろうとしていることを達成するためのより良い方法はありますか?
ありがとう
c# - Excel 相互運用で空の行を削除する
PDF に変換する必要があるユーザー提供の Excel ファイルがあります。Excel 相互運用機能を使用して、これをうまく行うことができます.ExportAsFixedFormat()
。ワークブックに何百万行もあると、私の問題が発生します。これは、50,000 ページ以上のファイルになります。ワークブックのすべての行にコンテンツが含まれていれば問題ありません。ただし、これらのファイルの 1 つが表示されるたびに、おそらく 50 行にコンテンツがあり、残りは空白です。適切なサイズの PDF にエクスポートできるように、空の行を削除するにはどうすればよいですか?
最後の行から始めて、行にコンテンツがあるかどうかを1つずつ
CountA
確認し、ある場合は削除してみました。これには永遠に時間がかかるだけでなく、約 100k 行の後に次のエラーで失敗するようです。コードが最適化されているか、ネイティブ フレームがコール スタックの一番上にあるため、式を評価できません。
使用してみまし
SpecialCells(XlCellType.xlCellTypeLastCell, XlSpecialCellsValue.xlTextValues)
たが、セルに書式設定 (背景色など) がある場合は行が含まれます。Worksheet.UsedRange
その後、すべてを使用してから削除しようとしましたUsedRange
が、ポイント2と同じ問題があります。
これは私が試したコードです:
コードに問題がありますか?これは相互運用の問題ですか?それとも、Excel でできることの制限にすぎないのでしょうか? 私が試みていることを行うためのより良い方法はありますか?
c# - C#はExcelワークブック、OLEDB、またはExcel Interopを読んでいますか?
60,000件以上のレコードがある2枚のExcelワークブックを読む必要があります。アプリケーションはASP.Netアプリケーションであるため、パフォーマンスが重要になります。
どのアプローチを取るべきですか?Microsoft.Office.Interop.Excelを使用して実行する必要がありますか、それともADO.NetのOLEDBを使用して実行する必要がありますか?
最善のアプローチは何ですか?
c# - Adobe PDF プリンターがどの「Ne」ポートに接続されているかを確認するにはどうすればよいですか?
プリンタが接続されているポート (Ne01:、Ne02:、Ne99: など) を検出するにはどうすればよいですか?
ここ BigCorp のコンピュータ (WinXP) には、「Adobe PDF」という名前の仮想プリンタを提供する Adobe Acrobat (バージョン 7.0 Pro) がインストールされています。マクロの記録中に Excel (2003) ワークブックを pdf に印刷する場合、プリンターの完全な名前は「Adobe PDF on Nexx:」です。ここで、xx は 2 桁の数字です。使用するコンピューターによって異なります。
私は、一連のスプレッドシートを開く Excel.Interop を使用して C# コンソール アプリを作成しました (他の人がこのような地獄への道を歩み始めることを強く思いとどまらせます)。それぞれでマクロを実行し、保存し、PDFとして印刷してから、PDFを共有ドライブのレポートフォルダーに移動します。
私が直面している問題は、Acrobat をインストールするたびに、PDF プリンターのポート番号がランダムに選択されるように見えることです...そして、それを取得する方法がわかりません。
これまでのところ、Win32_Printer クラスを次のように使用してみました
System.Drawing.Printing クラスも調べてみました。PrinterSettings.InstalledPrintersは、プリンターの名前「Adobe PDF」を提供しますが、ポート情報を取得する方法がわかりません。
「Adobe PDF」だけをExcel相互運用のPrintOut()メソッドに渡すと、「ドキュメントの印刷に失敗しました」というエラーが表示されて失敗することがあります...理由がわかりません。
ハードコードされた「Adobe PDF on Ne0x:」を適切な x 値で渡すと、毎回動作します。
考えられるすべてのバリエーションを試すと、Excel はデフォルトのプリンターに印刷されます。デフォルトのプリンターを変更するオプションがない (セキュリティ ポリシーの制限)
プリンター ポートを正しくプルするコードを教えてもらえますか?
c# - Excel相互運用機能を使用して数式範囲を拡張する
Excel Interopライブラリを使用してシートを取得し、シート内の値を置き換えています。私のシート構造は次のとおりです。
列AEには、列FLのデータを処理する数式が含まれています。シートを更新するときに、FLから内容をクリアし、数式をAEに残します。次に、列FLに新しいデータを入力します。
入力した新しいデータの全範囲に拡張するには、列AE(任意の行)の数式が必要です。
たとえば、データを8行から20行に拡張すると、次のように=sum(G1,G8)
なり=sum(G1,G20)
ます。シート内の現在のすべての数式を取得する方法はありますか?数式の範囲を拡張するにはどうすればよいですか?