Excel导入导出

// Excel 读取数据
static public DataTable ImputExcel( string TableName, string FileName)
       {
          String sConnectionString= "provider=Microsoft.Jet.OLEDB.4.0; " + "data source=" ;
          sConnectionString += FileName + ";" +
     "Extended Properties=Excel 8.0;" ;
           string sql= string .Empty;
         
 
           sql = "SELECT * FROM [" +TableName+"$]";
           OleDbConnection conn;
           try
           {
              conn = new OleDbConnection (sConnectionString);
           }
           catch ( Exception ex)
           {
               MessageBox .Show(ex.Message, " 连接字符串错误 " , MessageBoxButtons .OK, MessageBoxIcon.Error);
               return null ;
           }
           OleDbCommand cmd = new OleDbCommand (sql,conn);
           OleDbDataAdapter dataAdapter = new OleDbDataAdapter ();
           dataAdapter.SelectCommand = cmd;
           DataTable dataTable= new DataTable ();
           try
           {
               dataAdapter.Fill(dataTable);
           }
           catch ( Exception ex)
           {
               MessageBox .Show(ex.Message, " 读取 Excel 错误 " , MessageBoxButtons .OK, MessageBoxIcon.Error);
               return null ;
           }
          
           return dataTable;
       }
// 把数据导出到 Excel
static public void OutputExcel( DataTable OutputDataTable, string saveFileName)
       {
           bool fileSaved = false ;
           string mySql = string .Empty;
           string helpSql = string .Empty;
           string FileName = OutputDataTable.TableName;
           Excel. Application xlApp = new Excel. Application ();
          
           if (xlApp == null )
           {
               MessageBox .Show(" 无法创建 Excel 对象,可能您的机子未安装 Excel" );
               return ;
           }
 
           Excel. Workbooks workbooks = xlApp.Workbooks;
           Excel. Workbook workbook = workbooks.Add(Excel. XlWBATemplate .xlWBATWorksheet);
           Excel. Worksheet worksheet = (Excel. Worksheet )workbook.Worksheets[1]; // 取得 sheet1
           workbooks.OpenXML(saveFileName, Excel. XlSheetType .xlWorksheet, LoadOption.Upsert);
           worksheet.Name = FileName;
           // 写入字段
           for ( int i = 0; i < OutputDataTable.Columns.Count; i++)
           {
               string columnName = OutputDataTable.Columns[i].ColumnName;
               worksheet.Cells[1, i + 1] = columnName;
 
               mySql += columnName + "," ;
               helpSql += "?," ;
           }
           mySql = mySql.Substring(0, mySql.Length - 1);
           helpSql = helpSql.Substring(0, helpSql.Length - 1);
 
           string sqlInsert = "INSERT INTO [" + FileName + "$]" + "(" + mySql + ")" + " values " + "(" +helpSql+ ")" ;
           //INSERT INTO [Sheet1$] (F1, F2) values (?, ?)
           // 保存 Excel
            try
            {
                workbook.Saved = true ;
                workbook.SaveCopyAs(saveFileName);
                fileSaved = true ;
            }
            catch ( Exception ex)
            {
                fileSaved = false ;
                MessageBox .Show(" 导出文件时出错 , 文件可能正被打开! /n" + ex.Message);
            }
            xlApp.Quit(); // 关闭 EXCEL
            GC .Collect();
            // 读取 Excel 架构
            if (fileSaved == true
            {
                String sConnectionString = "provider=Microsoft.Jet.OLEDB.4.0; " + "data source=" ;
                sConnectionString += saveFileName + ";" +
           "Extended Properties=Excel 8.0;" ;
                string sql = string .Empty;
                sql = "SELECT * FROM [" + FileName + "$]" ;
                OleDbConnection conn;
                try
                {
                    conn = new OleDbConnection (sConnectionString);
                }
                catch ( Exception ex)
                {
                    MessageBox .Show(ex.Message, " 连接字符串错误 " , MessageBoxButtons .OK, MessageBoxIcon.Error);
                    return ;
                }
                OleDbCommand cmd = new OleDbCommand (sql, conn);
                OleDbDataAdapter dataAdapter = new OleDbDataAdapter ();
                dataAdapter.SelectCommand = cmd;
                OleDbCommand cmd2 = new OleDbCommand (sqlInsert, conn);
                dataAdapter.InsertCommand = cmd2;
                DataTable dataTable = new DataTable ();
                try
                {
                    dataAdapter.Fill(dataTable);
                }
                catch ( Exception ex)
                {
                    MessageBox .Show(ex.Message, " 读取 Excel 错误 " , MessageBoxButtons .OK, MessageBoxIcon.Error);
                    return ;
                }
                conn.Open();
                foreach ( DataRow dr in OutputDataTable.Rows)
                {
                    foreach ( DataColumn dc in dataTable.Columns)
                    {
                        cmd2.Parameters.AddWithValue(dc.ColumnName, dr[dc.ColumnName]);
                    }
                    //cmd2.ExecuteNonQuery();
                }
               
                conn.Close();
                
            }
       }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值