2016-08-25 13 views
0

にExcelをエクスポートするExcelに挿入する行の数を特定し、同じ行の次の行の位置を取得する方法次のデータテーブルの値を挿入するExcelシート?次のデータテーブルから同じExcelシートの続きを取得する方法C#

var lines = new List<string>(); 

string[] columnNames = dataTable.Columns.Cast<DataColumn>(). 
           Select(column => column.ColumnName). 
           ToArray(); 

var header = string.Join(",", columnNames); 
lines.Add(header); 

var valueLines = dataTable.AsEnumerable() 
       .Select(row => string.Join(",", row.ItemArray));    
lines.AddRange(valueLines); 

File.WriteAllLines("excel.csv",lines); 
+0

の可能性のある重複した[データのExcelの行数をカウントするには?](http://stackoverflow.com/questions/6301665/how-to-count-the-number-of -rows-in-excel-with-data) – uTeisT

+0

これはDataTable.Rows.Countと同じではありませんか? –

+0

@アレックスk:それは本当ですが、データの見出しや長さが変わっても変更される可能性があります –

答えて

1
private static Microsoft.Office.Interop.Excel.Workbook mWorkBook; 
private static Microsoft.Office.Interop.Excel.Sheets mWorkSheets; 
private static Microsoft.Office.Interop.Excel.Worksheet mWSheet1; 
private static Microsoft.Office.Interop.Excel.Application oXL; 
public static void ReadExistingExcel() 
{ 
    string path = @"C:\Tool\Reports1.xls"; 
    oXL = new Microsoft.Office.Interop.Excel.Application(); 
    oXL.Visible = true; 
    oXL.DisplayAlerts = false; 
    mWorkBook = oXL.Workbooks.Open(path, 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); 
    //Get all the sheets in the workbook 
    mWorkSheets = mWorkBook.Worksheets; 
    //Get the allready exists sheet 
    mWSheet1 = (Microsoft.Office.Interop.Excel.Worksheet)mWorkSheets.get_Item("Sheet1"); 
    Microsoft.Office.Interop.Excel.Range range= mWSheet1.UsedRange; 
    int colCount = range.Columns.Count; 
    int rowCount= range.Rows.Count; 
    for (int index = 1; index < 15; index++) 
    { 
     mWSheet1.Cells[rowCount + index, 1] = rowCount +index; 
     mWSheet1.Cells[rowCount + index, 2] = "New Item"+index; 
    } 
    mWorkBook.SaveAs(path, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, 
    Missing.Value, Missing.Value, Missing.Value, Missing.Value,Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, 
    Missing.Value, Missing.Value, Missing.Value, 
    Missing.Value, Missing.Value); 
    mWorkBook.Close(Missing.Value, Missing.Value, Missing.Value); 
    mWSheet1 = null; 
    mWorkBook = null; 
    oXL.Quit(); 
    GC.WaitForPendingFinalizers(); 
    GC.Collect(); 
    GC.WaitForPendingFinalizers(); 
    GC.Collect(); 
} 
+0

このメソッドは私のためにうまく動作し、私はこれで正確な方法を行ういくつかのメソッドを書き換えます –

関連する問題