none
Добавление строки в Excel RRS feed

  • Вопрос

  • Здравствуйте!

    Имеется файл Excel с данными. Как осуществить вставку строки данных в файл не зная адреса ячеек. Например заполнены первый 50 строк, надо добавить 51 строку. Как получить число заполненых строк, чтобы в следующую пустую добавить данные?


    Спасибо!
    • Перемещено Tagore Bandlamudi 2 октября 2010 г. 21:51 MSDN Forums consolidation (От:Разработка Windows-приложений)
    11 апреля 2010 г. 18:50

Ответы

Все ответы

  • Добрый день. Вам необходимо использовать Microsoft.Office.Interop.Excel.Range
    Для связи [Mail]
    12 апреля 2010 г. 7:42
  • using System;
    using System.Data;
    using System.Data.OleDb;
    
    namespace ExcelDataTestApplication
    {
     class Class
    {
    [STAThread]
     static void Main(string[] args)
    {
          string filename = @"имя_файла.xls";
          // Строка подключения15.      string ConnectionString= String.Format
    ("Provider=Microsoft.Jet.OLEDB.4.0;Extended17.Properties=\"Excel 8.0;HDR=No\";Data Source={0}", filename);
          // открываем соединение
          DataSet   ds=new DataSet("EXCEL");
          OleDbConnection cn=new OleDbConnection(ConnectionString);
          cn.Open();
          // схема листов в документе
          DataTable schemaTable =
            cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, 
                new object[] {null, null, null, "TABLE"});
          // обработка списка листов
          for (int i=0; i< schemaTable.Rows.Count; i++)
          {
            // получаем имена (в массиве много чего есть интересного)
            Console.WriteLine(schemaTable.Rows[i].ItemArray[2]);
          }
    
          // Берем имя первого листа
          string sheet1 = (string) schemaTable.Rows[0].ItemArray[2];
          // Выбираем все данные с листа
          string select = String.Format("SELECT * FROM [{0}]", sheet1);
          OleDbDataAdapter ad = new OleDbDataAdapter(select, cn);
          ad.Fill(ds);
          DataTable tb=ds.Tables[0];
          // Показать данные с листа
          foreach (DataRow row in tb.Rows)
          {
            foreach(object col in row.ItemArray)
            {
              Console.Write(col+"\t");
            }
            Console.WriteLine();
          }
          Console.ReadLine();
        }
      }
    я вот так читаю, не используя Microsoft.Office.Interop.Excel.Range.
    Спасибо!
    12 апреля 2010 г. 10:44
    • Помечено в качестве ответа I.Vorontsov 16 апреля 2010 г. 7:27
    15 апреля 2010 г. 12:31