web-dev-qa-db-ja.com

C#を使用してExcelファイル(.xls / .xlsx)を読み書きする

C#でExcelファイルを読み書きするにはどうすればよいですか?プロジェクトにExcel Objects Libraryを追加しましたが、ファイルにアクセスするために何をする必要があるのか​​について十分な説明が得られません。

私が理解するのを助けてください、そして、説明するとき、私はこれにちょっと新しいことを覚えておいてください、しかし、私は完全な初心者ではありません。私はよく勉強するので、私は完全に無知ではありません。

18
jitsuin

私は EPPlus を使用してこれらのタイプのアクションを実行するのが大好きです。 EPPlusは、プロジェクトで参照し、サーバー上でスプレッドシートを簡単に作成/変更できるライブラリです。エクスポート機能が必要なプロジェクトに使用します。

ライブラリの使用方法を示す素敵なブログエントリ 。ただし、ライブラリ自体には、その使用方法を説明するサンプルが付属しているはずです。

私の意見では、サードパーティのライブラリはMicrosoft COMオブジェクトよりもはるかに使いやすいです。試してみることをお勧めします。

14
Brad Butner

ExcelのすべてのニーズにNPOIを使用しています。

http://npoi.codeplex.com/

多くの一般的なExcelタスクの例のソリューションが付属しています。

8

Excelオートメーションを使用できます(基本的にはCOM Baseのものです)。例:

Excel.Application xlApp ;
Excel.Workbook xlWorkBook ;
Excel.Worksheet xlWorkSheet ;


xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Open("1.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

完全なチュートリアルへのリンク

2
Baget
**Reading the Excel File:**

string filePath = @"d:\MyExcel.xlsx";
Excel.Application xlApp = new Excel.Application();  
Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(filePath);  
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);  

Excel.Range xlRange = xlWorkSheet.UsedRange;  
int totalRows = xlRange.Rows.Count;  
int totalColumns = xlRange.Columns.Count;  

string firstValue, secondValue;   
for (int rowCount = 1; rowCount <= totalRows; rowCount++)  
{  
    firstValue = Convert.ToString((xlRange.Cells[rowCount, 1] as Excel.Range).Text);  
    secondValue = Convert.ToString((xlRange.Cells[rowCount, 2] as Excel.Range).Text);  
    Console.WriteLine(firstValue + "\t" + secondValue);  
}  
xlWorkBook.Close();  
xlApp.Quit(); 


**Writting the Excel File:**

Excel.Application xlApp = new Excel.Application();
object misValue = System.Reflection.Missing.Value;  

Excel.Workbook xlWorkBook = xlApp.Workbooks.Add(misValue);  
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);  

xlWorkSheet.Cells[1, 1] = "ID";  
xlWorkSheet.Cells[1, 2] = "Name";  
xlWorkSheet.Cells[2, 1] = "100";  
xlWorkSheet.Cells[2, 2] = "John";  
xlWorkSheet.Cells[3, 1] = "101";  
xlWorkSheet.Cells[3, 2] = "Herry";  

xlWorkBook.SaveAs(filePath, Excel.XlFileFormat.xlOpenXMLWorkbook, misValue, misValue, misValue, misValue,  
Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);  



xlWorkBook.Close();  
xlApp.Quit();  
1

http://openxmldeveloper.org/ にも興味があるかもしれません

1
Peter Schneider

単純な操作を行っており、自分をxlsxに結び付けることができる場合は、XMLを自分で操作することを検討できます。私はそれを行って、Excelライブラリを調べるよりも速いことがわかりました。

また、使いやすいサードパーティのライブラリもあります。MSでは使用できないサーバーで使用できます。

0
LosManos