2

xml ドキュメントに変更したデータセットがあり、xsl シートを使用して Excel xml 形式に変換し、アプリケーションからプログラムでデータを開くことができるようにしました。私はこれで2つの問題に遭遇しました:

  1. Excel は、Excel ファイルを開くためのデフォルトの Windows アプリケーションではないため、Program.Start("xmlfilename.xml") を実行すると、IE が開かれ、XML ファイルが読みにくくなります。

  2. ファイルの名前を .xlsx に変更すると、「これは Excel ファイルではありません。続行しますか」という警告が表示されます。これは顧客にとって理想的ではありません。

理想的には、Excel ファイルを開くための既定の OS 設定を変更せずに、Windows が Excel でファイルを開くようにしたいと考えています。Office との相互運用も可能ですが、このアプリケーションでは少しやり過ぎのようです。これを機能させるためのアイデアはありますか?

ソリューションは .Net/C# にありますが、クリーンなソリューションを作成するための他の可能性も受け入れています。

4

6 に答える 6

4

XML の 2 行目に以下を挿入すると、Windows が Excel で開くように指示されます。

<?mso-application progid="Excel.Sheet"?>
于 2008-09-17T12:51:19.613 に答える
1

XML-Excel の拡張子である xlsx としてファイルを保存するとどうなるでしょうか。

于 2008-09-16T23:12:43.277 に答える
1
Process.Start(@"C:\Program Files\Microsoft Office\Officexx\excel.exe", "yourfile.xml");

そうは言っても、メッセージボックスは引き続き表示されます。Interop を使用できると思いますが、どれだけうまく機能するかはわかりません。

于 2008-09-16T23:19:42.077 に答える
0

サードパーティのライブラリをプラグインすることについて事前にお詫び申し上げます。無料ではないことは承知していますが、TMS SoftwareのFlexCel Studioを使用しています。データをダンプする以上のこと (書式設定、動的クロス集計など) を行いたい場合は、非常にうまく機能します。それを使用して、週に何百ものレポートを生成します。

FlexCel は厳密に型指定されたデータセットを受け入れ、関係に従ってデータをグループ化できます。生成された Excel ファイルは、Crystal Reports の Excel エクスポートから得られるものよりもはるかにきれいに見えます。Crystal Reports と OLE 自動化を行いました。FlexCel は、EU で 125 ドルという安さです。

于 2008-09-17T01:05:33.193 に答える
0

お役に立てれば。

MSDN の OpenXML - http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.workbooks.openxml(v=office.11 ​​).aspx

using Excel = Microsoft.Office.Interop.Excel;

string workbookPath= @"C:\temp\Results_2013Apr02_110133_6692.xml";

            this.lblResultFile.Text = string.Format(@" File:{0}",workbookPath);
            if (File.Exists(workbookPath))
            {
                Excel.Application excelApp = new Excel.Application();
                excelApp.Visible = true;
                Excel.Workbook excelWorkbook = excelApp.Workbooks.OpenXML(workbookPath, Type.Missing, Excel.XlXmlLoadOption.xlXmlLoadPromptUser);
            }
            else
            {
                MessageBox.Show(String.Format("File:{0} does not exists", workbookPath));
            }
于 2013-04-02T19:57:20.630 に答える
0

Sam が述べたように、xlsx ファイル拡張子はおそらく適切な方法です。ただし、xml ファイルを xlsx として保存するだけではありません。xlsx は、実際にはフォルダー内に多数の xml ファイルを含む zip ファイルです。個人的に試したことはありませんが、いくつかの良い説明を提供しているように見えるいくつかの良いサンプルコードを見つけました。

于 2008-09-16T23:21:36.017 に答える