2015-04-09 2 views
0

Я пытаюсь перезаписать данные на листе excel. То, как я это делаю, - это удалить содержимое с листа и затем записать диапазон данных. Проблема в том, что когда я пишу данные, они удаляют формат ячейки, а затем помещают мои номера в виде текста. есть способ сохранить формат, который пользователь определил, поэтому, когда я пишу данные, он использует тот же формат?как записать данные в Excel без изменения текущего формата

+2

Оставьте свой код. У нас нет идеи, как вы пишете данные в excel. Какую структуру вы используете для управления excel? Ado.net? Interop? открыть xml? или какой-либо третьей стороны? –

ответ

0

Вы можете использовать файл dll Microsoft.Office.Interop.Excel. Добавьте его в ссылку на проект и в свой код, используя с помощью Excel = Microsoft.Office.Interop.Excel;

Затем проверьте приведенный ниже код. Кроме того, для этой DLL должен быть установлен Microsoft Excel в машине, где этот код будет запущен.

Excel.Application excel = new Excel.Application(); 
     excel.DisplayAlerts = false; 
     excel.Workbooks.Add(); 
     Excel.Worksheet worksheet = excel.ActiveSheet; 
     int rowIndex = 2 ; 
     worksheet.Cells[1, "A"] = "List Title"; 
     worksheet.Cells[1, "B"] = "Item Count"; 
     Console.WriteLine("Copying the contents to Excel"); 
     foreach (var list in listCollection) 
     { 

      worksheet.Cells[rowIndex, "A"] = list.Title; 
      worksheet.Cells[rowIndex, "B"] = list.ItemCount; 
      rowIndex++; 
      //Console.Write("List Title: {0}", list.Title); 
      //Console.WriteLine("\t"+"Item Count:"+list.ItemCount); 

     } 
     string fileName = string.Format(@"C:\FileName.xlsx"); 

     worksheet.SaveAs(fileName); 
     Console.WriteLine("Export Completed"); 
     Console.ReadLine(); 
     excel.Quit(); 
     GC.Collect(); 
+0

Спасибо Akarsh за ваш ответ. Тем не менее, мне нужно будет написать диапазон. например MSExcel.Range first_cell = (MSExcel.Range) рабочий лист. Целлы [startRow, column]; MSExcel.Range last_cell = (MSExcel.Range) рабочий лист.Cells [lastRow, column]; workheet.get_Range (first_cell, last_cell) .Value2 = значения; – user3057790

+0

что вам нужно делать с Range. Не могли бы вы объяснить? –

+0

Я пытаюсь написать столбец данных. Однако, когда я делаю это, я теряю формат столбца, который был указан пользователем. – user3057790

Смежные вопросы