asp.net(C#)excel匯入匯出類

來源:互聯網
上載者:User
    public class HExcel    {        #region 匯入表格        /// <summary>        /// 讀取Excel檔案,內容儲存在DataSet中        /// </summary>        /// <param name="fileName">檔案路徑</param>        /// <param name="sSelect">選擇語句{"A:F"表示選擇A到F列,包含A,F列, "A1:B2"表示選擇A1到B2範圍,包括A1,B2}</param>        /// <param name="bTitle">是否將第一行作為標題列,如果是則可以採用 dr["天津"] 的形式讀取資料,否則採取dr[0]的形式</param>        /// <returns></returns>        public static DataTable ToDataSet(string fileName, string sSelect, bool bTitle)        {            //HDR=Yes,這代表第一行是標題,不做為資料使用 ,如果用HDR=NO,則表示第一行不是標題,做為資料來使用。系統預設的是YES            //IMEX有3個值:當IMEX=2 時,EXCEL文檔中同時含有字元型和數字型時,比如第C列有3個值,2個為數值型 123,1個為字元型 ABC,當匯入時,            //頁面不報錯了,但庫裡只顯示數值型的123,而字元型的ABC則呈現為空白值。當IMEX=1時,無上述情況發生,庫裡可正確呈現 123 和 ABC.            string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties=\"Excel 8.0;HDR=" + (bTitle ? "YES" : "NO") + ";IMEX=1\"";            var conn = new OleDbConnection(strConn);            string strExcel = string.Format(@"select * from [sheet1${0}]", sSelect);            var ds = new DataSet();            try            {                conn.Open();                var xlsCommand = new OleDbDataAdapter(strExcel, strConn);                xlsCommand.Fill(ds, "sheet1$");            }            catch (Exception)            {                return null;            }            finally            {                conn.Close();                conn.Dispose();            }            if (ds.Tables.Count > 0 && ds.Tables[0].Rows != null && ds.Tables[0].Rows.Count > 0)                return ds.Tables[0];            return null;        }        #endregion        #region ExportToExcel:匯出excel        /// <summary>        /// 將DataTable轉成Excel[Table]字串. 可用於直接輸出.        /// </summary>        /// <param name="dt">傳入的DataTable資料, 必須提供標題!</param>        /// <returns></returns>        public static string DTToExcelStr(DataTable dt)        {            string newLine = "<table cellspacing=\"1\" border=\"1\">";            newLine += "<tr><td colspan=\"" + dt.Columns.Count + "\" align=\"center\">" + dt.TableName + "</td></tr>";            newLine += "<tr>";            for (int i = 0; i < dt.Columns.Count; i++)            {                newLine += "<td>" + dt.Columns[i].Caption + "</td>";            }            newLine += "</tr>";            for (int j = 0; j < dt.Rows.Count; j++)            {                newLine += "<tr>";                for (int i = 0; i < dt.Columns.Count; i++)                {                    newLine += "<td>" + dt.Rows[j][i] + "</td>";                }                newLine += "</tr>";            }            newLine += "</table>";            return newLine;        }        /// <summary>        /// 將DataTable匯出到excel檔案        /// </summary>        /// <param name="dt">DataTable資料來源</param>        /// <param name="sFilePath">Excel檔案路徑</param>        /// <returns></returns>        public static bool DTToExcelFile(DataTable dt, string sFilePath)        {            return HFile.Write(sFilePath, DTToExcelStr(dt));        }        #endregion    }
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.