すでに入手している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();
}
そうではありません。私を信じて、このサイトは私の問題解決のためのものです。しかし、そのスレッドや他のいくつかのものは、すべてoffice.interopか他のインストールされたサードパーティの参照のいずれかの回答を持っています。私が求めているのは、C#(linqToExcel?)を使用してxlsxを作成する方法です。 csvを作成することは可能です。おそらく変換方法が役に立ちますか? – Jon
答えの1つは、第三者ではないOLEDBについてです。 Excel XMLファイル形式のドキュメンテーションへのリンクと、サンプルコードへのリンクが追加されています。それは重複しており、まったく同じ質問に対する多くの可能な解決策を提供する回答があります。 –
目の不自由な環境(IIS内またはWindowsサービスから)から実行すると、オフィスの相互運用クラス[サポートされていません](https://support.microsoft.com/en-us/kb/257757)たとえExcelがインストールされていても、サーバー上でそれらを使用するべきではありません。 –