#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. ну, есть ли возможный способ заменить данные только на первом листе?