3

私は最近、VB6データ収集アプリの更新を担当し、Excelレポートを生成してアプリから印刷する機能を追加しました(どちらも同じコンピューターで実行する必要があります)。通常、これは問題にはなりません。Excelオブジェクトを使用する前に、VB6でExcelレポートを生成しました。

そこで、先に進んで変更をコーディングして提示したところ、このプログラムがインストールされるマシンにはExcelの完全なコピーがないため、別の解決策を考え出す必要があると言われました。

区切りファイル(カンマ区切りまたはテキスト)を作成しようとしましたが、これらのファイルをExcelで開くと、適切にフォーマットされません。つまり、1つのセルが20文字の場合、セルサイズが固定されているため、文字の半分が切り取られます。

私にはさらにいくつかのアイデアがあります:

1)openofficeにAPIがあることを知っています。このAPIを使用して、適切にフォーマットされたExcelファイルを生成できますか?使用できるCOMオブジェクトはありますか?

2)このツールを見つけました:http://www.carlosag.net/Tools/ExcelXmlWriter/ ただし、VB.NETで記述されています。このツールをVB6で引き続き使用できますか?

私は本当に困惑していて、次にどちらの方向に向かうべきかわかりません。上記のユーティリティについて誰かアイデアがありますか?また、私は他の提案/より良い方法にもオープンです。私がこのタスクを達成するのに役立つものは何でもありがたいです!

注:これらのレポートを表示するために使用されるExcelのバージョンはExcel2007です。

4

10 に答える 10

4

次の 2 つの要件を見てみましょう。

Excel レポートを生成し、アプリから印刷する機能を追加します。

このプログラムがインストールされるマシン [sic] には、Excel の完全なコピーはありません。

私があなたを誤解していない限り、それらは相互に排他的であるようです. あるマシンでレポートを生成するだけで、別の場所で表示および印刷する場合は、SpreadSheetMLを使用してみてください。

SpreadSheetML に関する追加情報をグーグルで検索するときは注意してください。SpreadSheetMLを Office 2007 の Excel で使用される新しい Xml 形式と混同する誤った情報がたくさんあります。SpreadSheetML は OfficeXP から機能し、Office 2000 では限られた意味でさえ機能します。

于 2009-03-12T19:22:50.177 に答える
1

通常どおりにCSVファイルを作成します。

印刷する前に、デスクトップアプリにXLSファイルが利用可能なマシンでフォーマットを実行させます。

于 2009-03-12T19:13:58.543 に答える
1

Excelファイルをhtmlとして保存できます。データをExcelとしてエクスポートする必要があるWebアプリで、Excelエクスポートのようなhtmlファイルを作成しました。次に、それを application/vnd.ms-excel として提供しました。Excelは問題なく開きます。あなたはおそらく似たようなことをすることができます。

あなたがリンクしたようなライブラリを見つけることもできます.xmlの派生物だと思うので、新しいオフィスファイル形式を直接書き込みます.

于 2009-03-12T19:10:43.997 に答える
0

.NETランタイムのインストールを希望する場合は、COMに公開されている.NETクラスを使用してライブラリをオプション#2でラップできます。このクラスは、ExcelXMLwriterへの呼び出しを渡すだけです。

別の方法は、XML標準を研究して独自のライターを作成することですが、それはおそらくプロジェクトにとってやり過ぎです。

OpenOfficeについては、こちらをご覧ください。特にこのページのVBAセクションはここにあります。使用できるCOMコンポーネントがあるようです。

于 2009-03-12T19:12:32.917 に答える
0

私もCSVオプションを使用します。DLL やその他の種類のオブジェクトは必要ありません。1,024.00 の値を指定すると 2 つの列が作成され、ブック全体がホースになるため、数値に使用する書式設定には十分注意してください。Format(Numberfield,"#########.#0") のような形式になります。

于 2012-02-08T20:40:06.440 に答える
0

NPOIを使用 しています Excel ライブラリを使用せず、Excel 2003 形式で出力します

于 2010-09-17T09:56:57.047 に答える
0

VB6 から SpreadsheetML ファイルを作成するのは非常に簡単です。これは、特定の種類の xml を含む単なるテキスト ファイルです。MSDN から SpreadsheetML と WordML のすべてのドキュメントを入手できると思います。

私は現在、SpreadsheetML を使用して vb.net アプリケーションから約 60 の異なるカスタム レポートを作成しています。Excel 2007 に実装されているファイル拡張子とドキュメント セキュリティの変更により、少なくとも 1 つの潜在的な問題があります。SpreadsheetML ベースの Excel ファイルを生成し、拡張子 .xls を使用すると、2003 で問題なく開くことができます。Excel 2007 は、ファイル拡張子がファイルの内容と一致しないことを通知するダイアログ。警告ダイアログの後、ファイルを開いて正しく表示します。SpreadsheetML ドキュメントの拡張子を .xml に変更すると、Excel 2007 で問題なく開くことができます。ただし、XML ベースのスプレッドシートは、Excel 2003 を実行しているマシンの IE で開くことができます。

于 2009-03-26T20:01:34.550 に答える
-1

私は解決策を見つけました:

Excel スプレッドシートの作成と印刷に使用できる DLL を見つけました。XMLライターと同じだと思いますが、VB6用です。

于 2009-03-16T14:31:56.343 に答える