.NET操作Excel
一.讀取Excel數據,并顯示
1.配置文件
<configuration>
??? <system.web>
??????? <compilation debug="true" targetFramework="4.0" />
??? </system.web>
? <appSettings>
??? <!--連接03版本的-->
??? <!--<add key="SQLCONNECTIONSTRING" value="Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source="/>
??? <add key="DBPATH" value="App_Data\username.xls"/>-->
???
??? <!--連接07版本的-->
??? <add key="SQLCONNECTIONSTRING" value="Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0 Xml;Data Source=" />
??? <add key="DBPATH" value="App_Data\usernames.xlsx"/>
??? <!--連接07access數據庫-->
??? <add key="OLEDBCONNECTIONSTRING" value="Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Access 12.0 Xml;Data Source=" />
??? <!--<add key="DBPATH" value="App_Data\username.accdb"/>-->
??? <!--使用.net生成Excel表格-->
??? <add key="SQLCONNECTIONSTR" value="data source=.;uid=sa;pwd=123456;database=students;pooling=true"/>
? </appSettings>
</configuration>
2.
using System;
using System.Configuration;
using System.Data;
using System.Data.OleDb;
namespace WebApplication
{
??? public partial class MyExcelToDG : System.Web.UI.Page
??? {
??????? private readonly string SQLCONNECTIONSTRING = ConfigurationManager.AppSettings["SQLCONNECTIONSTRING"].ToString();
??????? private readonly string DBPATH = ConfigurationManager.AppSettings["DBPATH"].ToString();
??????? protected void Page_Load(object sender, EventArgs e)
??????? {
??????????? if (!IsPostBack)
??????????? {
??????????????? GridView1.DataSource = CreateDataSource();
??????????????? GridView1.DataBind();
??????????? }
??????? }
??????? private DataSet CreateDataSource()
??????? {
??????????? //設置Excel的文件訪問地址
??????????? String ExcelDBPath = SQLCONNECTIONSTRING + Server.MapPath(DBPATH) + ";";
??????????? //定義訪問Excel文件的連接
??????????? OleDbConnection conn = new OleDbConnection(ExcelDBPath);
??????????? //OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM[username$]",conn);
??????????? OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM students", conn);
??????????? DataSet ds = new DataSet();
??????????? da.Fill(ds);
??????????? return ds;
??????? }
??? }
}
?
?
?
?
二.將sqlserver中的數據導出到Excel中
using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
namespace WebApplication
{
??? public partial class MyDataToExcel : System.Web.UI.Page
??? {
??????? private readonly string SQLCONNECTIONSTR = ConfigurationManager.AppSettings["SQLCONNECTIONSTR"].ToString();
??????? protected void Page_Load(object sender, EventArgs e)
??????? {
??????????? if (!IsPostBack)
??????????? {
??????????????? //創建Excel文件
??????????????? try
??????????????? {
??????????????????? CreateExcelTable();
??????????????????? Response.Write("<script>alert('成功導出!')</script>");
??????????????? }
??????????????? catch (Exception)
??????????????? {
??????????????????? Response.Write("<script>alert('發生錯誤!')</script>");
??????????????? }
??????????? }
??????? }
??????? //獲取數據
??????? private DataSet GetData()
??????? {
??????????? //從數據庫中獲取數據
??????????? String cmdText = "Select * from Student_Info";
??????????? using (SqlConnection conn = new SqlConnection(SQLCONNECTIONSTR))
??????????? {
??????????????? SqlDataAdapter da = new SqlDataAdapter(cmdText, conn);
??????????????? conn.Open();
??????????????? DataSet ds = new DataSet();
??????????????? da.Fill(ds);
??????????????? return (ds);
??????????? }
??????? }
??????? //創建Excel文件
??????? private void CreateExcelTable()
??????? {
??????????? //從數據庫獲取數據
??????????? DataSet ds = GetData();
??????????? //創建Excel對象
??????????? Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
??????????? //設置行和列的索引
??????????? int rowIndex = 1;
??????????? int collndex = 0;
??????????? //添加Excel對象的WorkBooks
??????????? excel.Application.Workbooks.Add(true);
??????????? System.Data.DataTable table = ds.Tables[0];
??????????? //將所得到的表的列名,賦給單元格
??????????? foreach (DataColumn col in table.Columns)
??????????? {
??????????????? //添加列名
??????????????? collndex++;
??????????????? excel.Cells[1, collndex] = col.ColumnName;
??????????? }
??????????? //同樣的方法處理數據
??????????? foreach(DataRow row in table.Rows)
??????????? {
??????????????? rowIndex++;
??????????????? collndex = 0;
??????????????? foreach (DataColumn col in table.Columns)
??????????????? {
??????????????????? collndex++;
??????????????????? excel.Cells[rowIndex, collndex] = row[col.ColumnName].ToString();
??????????????? }
??????????? }
??????????? //不可見,即后臺處理
??????????? excel.Visible = false;
??????????? excel.DisplayAlerts = false;
??????????? //保存剛才創建的Excel表格
??????????? excel.Save(MapPath("App_Data/ExcelTable.xls"));
??????????? excel.Application.Workbooks.Close();
??????????? excel.Application.Quit();
??????????? excel.Quit();
??????????? //釋放使用的Excel對象
??????????? System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
??????????? GC.Collect();
??????? }
??? }
}
?
轉載于:https://www.cnblogs.com/java20130723/archive/2012/12/16/3211492.html
總結
以上是生活随笔為你收集整理的.NET操作Excel的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你可能不知道的跨域解决方案
- 下一篇: mysql varchar varbin