2016-02-09 3 views
0

Я хотел бы выбрать все данные из листа в excel и затем создать новый файл excel с помощью кода C#, а затем вставить эти данные в новый файл excel, который был создан. У меня есть данные для выбора кода из excel ниже, но я знаю, как писать код, создавая новый файл excel и вставляя данные, которые я выбрал для нового excel.выберите все данные из excel и вставьте данные в новый файл excel с помощью C# oledb

public DataTable bindExcel(string filename, string filetype, string path) 
{ 
    DataTable tbl = new DataTable(); 
    if (filename != "") 
    { 
     string connString = ""; 

     switch (filetype) 
     { 
      case ".xls": //Excel 97-03 
       connString = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString; 
       break; 
      case ".xlsx": //Excel 07 
       connString = ConfigurationManager.ConnectionStrings["Excel07ConString"].ConnectionString; 
       break; 
     } 
     connString = String.Format(connString, path, "Yes"); 
     OleDbConnection conn = new OleDbConnection(connString); 
     if (conn.State == ConnectionState.Closed) 
      conn.Open(); 
     DataTable dtExcelSchema; 
     dtExcelSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); 
     string SheetName = ""; 
     SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString(); 
     string query = "SELECT * From [" + "DATA$" + "]"; 
     OleDbCommand cmd = new OleDbCommand(query, conn); 
     OleDbDataAdapter da = new OleDbDataAdapter(cmd); 
     DataSet ds = new DataSet(); 
     da.Fill(ds, "Plan"); 
     tbl = ds.Tables["Plan"]; 

     da.Dispose(); 
     conn.Close(); 
     conn.Dispose(); 
    } 
    return tbl; 
} 

ответ

0

У вас есть все это объясняется в этих двух ссылок: Create Excel File и Insert data in Excel using oledb

Для создания нового файла Excel, необходимо использовать Microsoft Office Interop и сделать что-то вроде этого:

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

xlWorkBook = xlApp.Workbooks.Add(misValue); 
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 
xlWorkSheet.Cells[1, 1] = "Sheet 1 content"; 

xlWorkBook.SaveAs("d:\\csharp-Excel.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); 
xlWorkBook.Close(true, misValue, misValue); 
xlApp.Quit(); 

Вставка данных во вновь созданном первенствует это сделать:

System.Data.OleDb.OleDbConnection MyConnection ; 
System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand(); 
string sql = null; 
MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\\csharp.net-informations.xls';Extended Properties=Excel 8.0;"); 
MyConnection.Open(); 
myCommand.Connection = MyConnection; 
sql = "Insert into [Sheet1$] (id,name) values('5','e')"; 
myCommand.CommandText = sql; 
myCommand.ExecuteNonQuery(); 
MyConnection.Close(); 
+0

oh ... извините, если забыть описание Я не использую Microsoft Office Interop. У вас есть другой способ создать файл excel. –

+0

Я не думаю, что это возможно без использования какой-либо внешней библиотеки ... Единственное, что я могу придумать, это создать файл csv. Я думаю, что Excel ее откроет. – Pikoh

+0

Другим вариантом было бы сохранить пустой файл excel в качестве шаблона, скопировать его в другой файл с нужным именем и заполнить его oledb. Я думаю, это тоже сработает – Pikoh

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