2015-11-10 2 views
1

Я копирую данные из одного места в другое и могу читать и печатать все значения. Но не удалось добавить столбец в файл Excel. Мне нужно добавить три столбца в начале (Ex: 'A').Добавить три столбца в Excel

private void btnUpload_Click(object sender, RoutedEventArgs e) 
    { 
     ApplicationClass app = new ApplicationClass(); 
     Workbook book = null; 
     Worksheet sheet = null; 
     Range range = null; 

     try 

     { 
      app.Visible = false; 
      app.ScreenUpdating = false; 
      app.DisplayAlerts = false; 


      book = app.Workbooks.Open(@"C:\Windows\Temp\" + FileName, Missing.Value, Missing.Value, Missing.Value 
       , Missing.Value, Missing.Value, Missing.Value, Missing.Value 
       , Missing.Value, Missing.Value, Missing.Value, Missing.Value 
       , Missing.Value, Missing.Value, Missing.Value); 
      sheet = (Worksheet)book.Worksheets[1]; 

      // get a range to work with 
      range = sheet.get_Range("A1", Missing.Value); 
      // get the end of values to the right (will stop at the first empty cell) 
      range = range.get_End(XlDirection.xlToRight); 
      // get the end of values toward the bottom, looking in the last column (will stop at first empty cell) 
      range = range.get_End(XlDirection.xlDown); 

      // get the address of the bottom, right cell 
      string downAddress = range.get_Address(
       false, false, XlReferenceStyle.xlA1, 
       Type.Missing, Type.Missing); 

      // Get the range, then values from a1 
      range = sheet.get_Range("A1", downAddress); 
      object[,] values = (object[,])range.Value2; 

      // Value2 is a two dimenial array dime one = row, dime two = column. 
      Console.WriteLine("Col Count: " + values.GetLength(1).ToString()); 
      Console.WriteLine("Row Count: " + values.GetLength(0).ToString()); 

      Microsoft.Office.Interop.Excel.Range oRng = sheet.Range["A1"]; 
      oRng.EntireColumn.Insert(Microsoft.Office.Interop.Excel.XlInsertShiftDirection.xlShiftToRight, 
        Microsoft.Office.Interop.Excel.XlInsertFormatOrigin.xlFormatFromRightOrBelow); 
      oRng = sheet.Range["A1"]; 
      oRng.Value2 = "Discount"; 

     Microsoft.Office.Interop.Excel.Range oRng = sheet.Range["B1"]; 
          oRng.EntireColumn.Insert(Microsoft.Office.Interop.Excel.XlInsertShiftDirection.xlShiftToRight, 
        Microsoft.Office.Interop.Excel.XlInsertFormatOrigin.xlFormatFromRightOrBelow); 
      oRng = sheet.Range["B1"]; 
      oRng.Value2 = "NOTHING"; 



     Microsoft.Office.Interop.Excel.Range oRng = sheet.Range["C1"]; 
       oRng.EntireColumn.Insert(Microsoft.Office.Interop.Excel.XlInsertShiftDirection.xlShiftToRight, 
         Microsoft.Office.Interop.Excel.XlInsertFormatOrigin.xlFormatFromRightOrBelow); 
       oRng = sheet.Range["C1"]; 
       oRng.Value2 = "HELLO"; 

     } 
     catch (Exception k) 
     { 
      Console.WriteLine(k); 
     } 
     finally 
     { 
      range = null; 
      sheet = null; 
      if (book != null) 
       book.Close(false, Missing.Value, Missing.Value); 
      book = null; 
      if (app != null) 
       app.Quit(); 
      app = null; 
      MessageBox.Show("File Uploaded Successfully. Please Wait...!"); 

     } 

    } 

ответ

2

Вам нужно только установить значение ячейки. Не используйте «A1» как ячейку, потому что вам нужен номер столбца: A - первая буква, поэтому она должна быть столбцом 1, а B - второй буквой, должен быть столбец 2 и т. Д. В следующем коде вы можете видеть как это сделать правильно:

 Excel.Application app = new Excel.Application(); 
     Excel.Workbooks workbooks = app.Workbooks; 
     string filename = @"yourFilename"; 
     workbooks.Open(filename); 
     Excel.Workbook workbook = workbooks.Item[1]; 
     Excel.Sheets worksheets = workbook.Worksheets; 
     Excel.Worksheet worksheet = worksheets.Item[1]; 
     Excel.Range cells = worksheet.UsedRange; 

     cells[1, 2] = "Hello";//Set value for row 1 and column 2 (A1) 
     cells[1, 3] = "World";//Set value for row 1 and column 3 (B1) 

     workbook.Save();//Save Excel-File 
     app.Quit(); 
     Console.ReadKey(); 
+0

Благодарим вас за ответ. –