using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Windows.Forms; using System.Data.OleDb; namespace LFP_Manager.Function { public class csExcelFunction { public static DataTable[] ExcelImport(string Ps_FileName, string[] sheetName) { DataTable[] result = null; try { string ExcelConn = string.Empty; if (Ps_FileName.IndexOf(".xlsx") > -1) // 확장자에 따라서 provider 주의 { ExcelConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Ps_FileName + ";Extended Properties='Excel 12.0;HDR=YES'"; } else { ExcelConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Ps_FileName + ";Extended Properties='Excel 8.0;HDR=YES'"; } // 첫 번째 시트의 이름을 가져옮 using (OleDbConnection con = new OleDbConnection(ExcelConn)) { using (OleDbCommand cmd = new OleDbCommand()) { cmd.Connection = con; con.Open(); DataTable dtExcelSchema = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); if (dtExcelSchema.Rows.Count > 0) { sheetName = new string[dtExcelSchema.Rows.Count]; for (int i = 0; i < dtExcelSchema.Rows.Count; i++) sheetName[i] = dtExcelSchema.Rows[i]["TABLE_NAME"].ToString(); } con.Close(); } } string msg = string.Empty; for (int i = 0; i < sheetName.Length; i++) msg += sheetName[i] + "\r\n"; //MessageBox.Show("sheetName = " + msg); // 첫 번째 쉬트의 데이타를 읽어서 datagridview 에 보이게 함. using (OleDbConnection con = new OleDbConnection(ExcelConn)) { using (OleDbCommand cmd = new OleDbCommand()) { using (OleDbDataAdapter oda = new OleDbDataAdapter()) { result = new DataTable[sheetName.Length]; for (int i = 0; i < sheetName.Length; i++) { result[i] = new DataTable(); result[i].TableName = sheetName[i]; cmd.CommandText = "SELECT * From [" + sheetName[i] + "]"; cmd.Connection = con; con.Open(); oda.SelectCommand = cmd; try { oda.Fill(result[i]); } catch (Exception) { //MessageBox.Show(e1.Message); } con.Close(); } } } } } catch (Exception e) { MessageBox.Show(e.Message, "Exception", MessageBoxButtons.OK, MessageBoxIcon.Error); } return result; } public static void ExcelExport(string Ps_FileName, string[] sheetName) { string ExcelConn = string.Empty; if (Ps_FileName.IndexOf(".xlsx") > -1) // 확장자에 따라서 provider 주의 { ExcelConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Ps_FileName + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=3;READONLY=FALSE'"; } else { ExcelConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Ps_FileName + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=3;READONLY=FALSE'"; } // 첫 번째 시트의 이름을 가져옮 using (OleDbConnection con = new OleDbConnection(ExcelConn)) { using (OleDbCommand cmd = new OleDbCommand()) { cmd.Connection = con; con.Open(); DataTable dtExcelSchema = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); if (dtExcelSchema.Rows.Count > 0) { sheetName = new string[dtExcelSchema.Rows.Count]; for (int i = 0; i < dtExcelSchema.Rows.Count; i++) sheetName[i] = dtExcelSchema.Rows[i]["TABLE_NAME"].ToString(); } con.Close(); } } using (OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @"C:\Users\[...]\Classeur.xls" + ";Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1;READONLY=FALSE\"")) { connection.Open(); OleDbCommand commande = new OleDbCommand( "INSERT INTO [Feuil1$](F1,F2,F3) VALUES ('A3','B3','C3');", connection); commande.ExecuteNonQuery(); connection.Close(); connection.Dispose(); } } } }