2016-04-18 9 views
-1

すでに入手しているWindowsフォームアプリケーション(C#)は、.xlsxファイルに基づいてファイルをインポートします。私は、そのスプレッドシートの作成を自動化する新しいセクションを書くことを任されています。そのためのデータの作成は簡単です(完了しました)。私はスプレッドシートを作成するために必要な追加情報があります。Microsoft.Office.Interopなどは、Microsoft Officeがサーバーにインストールされていないことを11時間後に教えてくれました。溶液。私は同時に、目標が最小限の影響でこれを行うことであることを知りました...もし私が参照を追加することを避けることができれば、それが望ましいでしょう。サーバーに何かをインストールするようなことはオプションではありません。Officeやサードパーティの依存関係がインストールされていないExcelファイルを作成するにはどうすればよいですか?

私はそれを.csvファイルに十分に解析することができましたが、ファイルを選択するコードが.xlsxファイルのみを検索することが判明しました。だから私はそれをExcelで開くことはできますが、実際には解決策はありません。

私の研究では、「手動で.xlsxファイルを作成できますか?」という質問に対する回答は見つかりませんでした。私が得たと思う最も近いのは、実際にはoledbを使用していたのですが、スプレッドシートがゲート外に存在しないので、以下のコードでconn.open();になるたびに失敗しました。

このファイルを自分で簡単に作成する方法はありますか?私は知っている.xlsxは基本的に圧縮されたXMLですが、私はファイル内に置く必要があるタグを確認して、それを適切に圧縮する方法を見つけることができません。

string cnStr = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " +  filePathAndName + ";Persist Security Info=True;"; 
      using (System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(cnStr)) 
      { 
       conn.Open(); 
       System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(); 
       cmd.CommandText = "CREATE TABLE [" + worksheetCategory + "] (SKU VARCHAR, FileName VARCHAR);"; 
       cmd.ExecuteNonQuery(); 

       foreach (string f in files) 
       { 
        string shortProductName = f.Substring(f.LastIndexOf("\\") + 1); 
        shortProductName = shortProductName.Substring(0, shortProductName.IndexOf("_")); 
        cmd.CommandText = "INSERT INTO [" + worksheetCategory + "](SKU, FileName) VALUES(" + shortProductName + "," + f + ");"; 
        cmd.ExecuteNonQuery(); 
       } 
       conn.Close(); 
      } 
+1

そうではありません。私を信じて、このサイトは私の問題解決のためのものです。しかし、そのスレッドや他のいくつかのものは、すべてoffice.interopか他のインストールされたサードパーティの参照のいずれかの回答を持っています。私が求めているのは、C#(linqToExcel?)を使用してxlsxを作成する方法です。 csvを作成することは可能です。おそらく変換方法が役に立ちますか? – Jon

+0

答えの1つは、第三者ではないOLEDBについてです。 Excel XMLファイル形式のドキュメンテーションへのリンクと、サンプルコードへのリンクが追加されています。それは重複しており、まったく同じ質問に対する多くの可能な解決策を提供する回答があります。 –

+0

目の不自由な環境(IIS内またはWindowsサービスから)から実行すると、オフィスの相互運用クラス[サポートされていません](https://support.microsoft.com/en-us/kb/257757)たとえExcelがインストールされていても、サーバー上でそれらを使用するべきではありません。 –

答えて

0

あなたはこのサードパーティのか考えるとそれはマイクロソフトによってrealsedされているので、私は知らないが、Open XML SDK for Officeはあなたが読んで、ExcelがマシンにインストールせずにファイルをXLSX書くようになります。

NuGetパッケージDocumentFormat.OpenXmlをプロジェクトに追加するだけで、 "インストール"する必要はありません。必要なdllファイルをデプロイメントに含めてください。

1

OLEDBとExcel接続文字列を使用してADNを使用することができます。

しかし、それは非常に基本的な読み書きです。

私は最後のプロジェクトでOpenXml 2.5を使用しました。これは無料で、Microsoftからダウンロードすることができます。 OpenXmlはあなたにExcelの完全なコントロールを与えます。ただし、学習曲線があります。

また、com interopを使用したくありません。並行エクスポートでは最適ではなく、リソースの割り当て解除の問題のために常に失敗します。

関連する問題