用OleDb写的一个导出Excel的方法
生活随笔
收集整理的這篇文章主要介紹了
用OleDb写的一个导出Excel的方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
為什么80%的碼農都做不了架構師?>>> ??
//前幾天遇到個導出Excel的問題,然后上網找了很久,終于寫出這個方法了,所以分享一下。
?
/// <summary> /// 根據DataTable生成Excel /// </summary> /// <param name="dataTable">數據源</param> /// <param name="fileName">要保存的路徑</param> /// <param name="fileName">要保存的路徑</param> /// <param name=" rowsCount?">當一個工作表最多的行數rowsCount,當超過時,則新建工作表。</param> /// <returns>生成成功則返回True,否則返回False</returns> public static bool DataTable2Excel(DataTable dataTable, string fileName,int rowsCount) { bool rt = false;//用于返回值 if (dataTable==null && rowsCount<1) { return false; } int rowNum = dataTable.Rows.Count;//獲取行數 int colNum = dataTable.Columns.Count;//獲取列數 int SheetNum = (rowNum - 1) / rowsCount + 1; //獲取工作表數 string sqlText = "";//帶類型的列名 string sqlValues = "";//值 string colCaption = "";//列名 for (int i = 0; i < colNum; i++) { if (i != 0) { sqlText += " , "; colCaption += " , "; } sqlText += "[" + dataTable.Columns[i].Caption.ToString() + "] VarChar";//生成帶VarChar列的標題 colCaption += "[" + dataTable.Columns[i].Caption.ToString() + "]";//生成列的標題 } String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";Extended Properties=Excel 8.0;"; OleDbConnection cn = new OleDbConnection(sConnectionString); try { //判斷文件是否存在,存在則先刪除 if (File.Exists(fileName)) { File.Delete(fileName); } int sheet=1;//表數 int dbRow = 0;//數據的行數 //打開連接 cn.Open(); while(sheet<=SheetNum) { string sqlCreate = "CREATE TABLE [Sheet" + sheet.ToString() + "] (" + sqlText + ")"; OleDbCommand cmd = new OleDbCommand(sqlCreate, cn); //創建Excel文件 cmd.ExecuteNonQuery(); for (int srow = 0; srow < rowsCount; srow++) { sqlValues = ""; for (int col = 0; col < colNum; col++) { if (col != 0) { sqlValues += " , "; } sqlValues += "'" + dataTable.Rows[dbRow][col].ToString() + "'";//拼接Value語句 } String queryString = "INSERT INTO [Sheet"+sheet.ToString()+"] (" + colCaption + ") VALUES (" + sqlValues + ")"; cmd.CommandText = queryString; cmd.ExecuteNonQuery();//插入數據 dbRow++;//目前數據的行數自增 if (dbRow >= rowNum) { //目前數據的行數等于rowNum時退出循環 break; } } sheet++; } rt = true; } catch { } finally { cn.Close(); }return rt;
}?
轉載于:https://my.oschina.net/bangle/blog/49757
總結
以上是生活随笔為你收集整理的用OleDb写的一个导出Excel的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pku3020 Antenna Pl
- 下一篇: [转载]html5教程