C#创建、读取和修改Excel
windows下我们可以通过 Jet OLE DB访问Excel,就行访问数据库一样
// Namespaces, Variables, and Constants using System; using System.Configuration; using System.Data; private OleDbDataAdapter da; private DataTable dt; private void Excel_Load(object sender, System.EventArgs e) { // Create the DataAdapter. da = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", ConfigurationSettings.AppSettings["ExcelConnectString1"]); // Create the insert command. String insertSql = "INSERT INTO [Sheet1$] (CategoryID, CategoryName, Description) VALUES (?, ?, ?)"; da.InsertCommand = new OleDbCommand(insertSql, da.SelectCommand.Connection); da.InsertCommand.Parameters.Add("@CategoryID", OleDbType.Integer, 0, "CategoryID"); da.InsertCommand.Parameters.Add("@CategoryName", OleDbType.Char, 15, "CategoryName"); da.InsertCommand.Parameters.Add("@Description", OleDbType.VarChar, 100, "Description"); // Create the update command. String updateSql = "UPDATE [Sheet1$] SET CategoryName=?, Description=? " WHERE CategoryID=?"; da.UpdateCommand = new OleDbCommand(updateSql, da.SelectCommand.Connection); da.UpdateCommand.Parameters.Add("@CategoryName", OleDbType.Char, 15, "CategoryName"); da.UpdateCommand.Parameters.Add("@Description", OleDbType.VarChar, 100, "Description"); da.UpdateCommand.Parameters.Add("@CategoryID", OleDbType.Integer, 0, "CategoryID"); // Fill the table from the Excel spreadsheet. dt = new DataTable( ); da.Fill(dt); // Define the primary key. dt.PrimaryKey = new DataColumn[] {dt.Columns[0]}; // Records can only be inserted using this technique. dt.DefaultView.AllowDelete = false; dt.DefaultView.AllowEdit = true; dt.DefaultView.AllowNew = true; // Bind the default view of the table to the grid. dataGrid.DataSource = dt.DefaultView; } private void updateButton_Click(object sender, System.EventArgs e) { da.Update(dt); }