Этот экспорт в Excel не работает, он только добавляет столбцы

#c# #sql #excel

#c# #sql #excel

Вопрос:

Итак, раньше он работал, когда у него был worbook.SaveAs(); но мне это было нужно, чтобы открыть существующий файл, а затем сохранить его. не перезаписывайте его.

я пытался использовать методы, показанные в разных вопросах здесь, но все они заменяют текущий файл и создают новый.

             SqlConnection cnn;
            string connectionString = null;
            string sql = null;
            string data = null;
            int i = 0;
            int j = 0;
            string filename = @"D:ExcelFilesDatabaseComp.xls";

            Microsoft.Office.Interop.Excel.Application xlApp;
            Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
            Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
            object misValue = System.Reflection.Missing.Value;

            xlApp = new Microsoft.Office.Interop.Excel.Application();
            xlWorkBook = xlApp.Workbooks.Open(filename, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue);
            xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

            connectionString = @"Data Source=.SQLEXPRESS;AttachDbFilename=C:UsersDietherDesktopOJT KIOSKDB_Kiosk.mdf;Integrated Security=True;User Instance=True";
            cnn = new SqlConnection(connectionString);
            cnn.Open();
            sql = "SELECT * FROM TBL_Company";
            SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn);
            DataSet ds = new DataSet();
            dscmd.Fill(ds);

            foreach (dynamic worksheet in xlWorkBook.Worksheets)
            {
                xlWorkSheet.Cells.ClearContents();
            }

            foreach (System.Data.DataTable dt in ds.Tables)
            {
                for (int i1 = 0; i1 < dt.Columns.Count; i1  )
                {
                    xlWorkSheet.Cells[1, i1   1] = dt.Columns[i1].ColumnName;
                }
            }

            for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i  )
            {
                int s = i   1;
                for (j = 0; j <= ds.Tables[0].Columns.Count - 1; j  )
                {
                    data = ds.Tables[0].Rows[i].ItemArray[j].ToString();
                    xlWorkSheet.Cells[s   1, j   1] = data;
                }
            }
            xlApp.DisplayAlerts = false;
            xlWorkBook.Save();
            xlWorkBook.Close(true, misValue, misValue);
            xlApp.Quit();
            xlApp.DisplayAlerts = false;

            releaseObject(xlWorkSheet);
            releaseObject(xlWorkBook);
            releaseObject(xlApp);
  

Комментарии:

1. open an existing file then save it. not over write it. Это противоречит само себе. Открытие файла и его сохранение означает перезапись предыдущего. Что вы на самом деле хотите сделать?

2. Имена листов в книге должны быть уникальными. База данных всегда будет содержать одни и те же имена таблиц, что приводит к перезаписи старого листа. Таким образом, вы могли бы добавить отметку даты к именам листов или поставить номер версии 1,2,3 в именах листов, когда имя листа уже существует.

3. ну, есть ли возможный способ заменить данные только на первом листе?