1:EXCEL導出非常簡單,將EXCEL模板上傳到項目中後,將其浏覽URL保存下來(excelUrl),然後:
window.location.href="http://localhost:10086/yuanxin/Resources/BusRoute.xlsx" //EXCEL浏覽路徑
或者使用<a href="excelUrl"></a>都行。
2:EXCEL導入並獲取數據,直接貼代碼如下:
public class ExcelHelp
{
//獲取http請求Request對象
public static HttpRequest baseRequest = HttpContext.Current.Request;
//獲取http請求Response對象
public static HttpResponse baseResponse = HttpContext.Current.Response;
/// <summary>
/// 獲取Post請求EXCEL文件數據
/// </summary>
/// <param name="fileFormName">EXCEL的表單名稱</param>
/// <returns></returns>
public static DataTable GetExcelData(string fileFormName)
{
//獲取Post請求--表單文件的文件名
string uploadFileName = baseRequest.Files[fileFormName].FileName;
//上傳文件到指定目錄(項目根目錄/Resources/uploadFileName)--可根據項目文件目錄進行調整
string path = HttpContext.Current.Server.MapPath("~/Resources/" + uploadFileName);
baseRequest.Files[fileFormName].SaveAs(path);
DataTable dataTable = new DataTable();
DataSet dataSet = new DataSet();
//解析文件數據,並存入服務器
//備注: "HDR=yes;"是說Excel文件的第一行是列名而不是數據,"HDR=No;"正好與前面的相反。
//"IMEX=1 "如果列中的數據類型不一致,使用"IMEX=1"可必免數據類型沖突。
string strConn = string.Format("Provider = Microsoft.ACE.OLEDB.12.0; Data Source = {0}; Extended Properties = 'Excel 8.0;HDR=Yes;IMEX=1';", path);
OleDbDataAdapter oada = new OleDbDataAdapter("select * from [Sheet1$]", strConn);
oada.Fill(dataSet);
if (dataSet.Tables.Count > 0)
{
dataTable = dataSet.Tables[0];
}
if (System.IO.File.Exists(path))
{
//如果存在則刪除
System.IO.File.Delete(path);
}
return dataTable;
}
}
備注: 使用C#創建EXCEL,暫未研究,以後有空再做補充。
在編寫本博客時,查閱了下面幫助博客:導入excel錯誤:外部表不是預期的格式 解決方案