私はスプレッドシートを開き、スプレッドシートの行をループするためにOpenXMLを使用しています。私は、行内のすべてのセルを返すlinqクエリを持っています。 Linqクエリは、MSDNのデモからそのままリッピングされました。OpenXML linqクエリ
IEnumerable<String> textValues =
from cell in row.Descendants<Cell>()
where cell.CellValue != null
select (cell.DataType != null
&& cell.DataType.HasValue
&& cell.DataType == CellValues.SharedString
? sharedString.ChildElements[int.Parse(cell.CellValue.InnerText)].InnerText
: cell.CellValue.InnerText);
LINQクエリは、値を持つすべてのセルを返すに素晴らしいですが、それは価値を持たない細胞を返しません。これは、どの細胞がどの細胞であるかを知ることを不可能にする。もう少し説明しましょう。たとえば、スプレッドシートに3つの列、名前、SSN、住所があります。このlinqクエリが動作する方法は、指定された行の値を持つセルだけを返します。したがって、 "John"、 ""、 "173 Sycamore"のデータ行がある場合、linqクエリは列挙で "John"と "173 Sycamore"を返すだけで、 "173 Sycamore"はSSNまたはAddressフィールドです。
私が必要とするのは、値がのセルだけでなく、すべてのセルが返されることです。
私は考えることができるすべての方法でlinqクエリを猿にしようとしましたが、私は運が全くありませんでした(つまり、where節を削除するのはやり手ではありません)。どんな助けもありがとう。ありがとう!
私はExcelスプレッドシートをエクスポートするためにClosedXMLを使用しましたが、インポートしたとは思いませんでした。それは?今日の自分のウェブサイトで今日も素早くリアルに見えていて、本当に素早く見えましたが、それが見えませんでした。私はEPPlusを見てみましょう。実際、OpenXMLを使って何かをしようとするたびに、一見シンプルでなければならないことに驚いていますが、何かが終了することになります! – Jagd
データを読み書きする機能をインポートすることによって、OpenXMLとEPPlusの両方でデータを書き込むことができます。私はOpenXMLで直接何かをしようとすることは王子の痛みですが、上記のようなツールやSDKの一部としてのドキュメントエクスプローラでは、これまでのCOM Interopよりはるかに優れたsooooooを扱うことに同意します! – jklemmack
ClosedXMLはうまく機能しました。私はOpenXMLを使いこなすのではなく、最初から使いたいと思っています。再度、感謝します! – Jagd