asp.net中開啟Excel上傳檔案,讀取資料的方法
程式碼:
/// <summary>
/// 開啟Excel檔案
/// </summary>
/// <param name="ExcelFileName">檔名</param>
private void OpenExcelFile(string ExcelFileName)
{
Excel.Application App = new Excel.Application();
if (App == null)
{
return; //Excel尚未安裝
}
Excel.Workbook workbook = App.Workbooks.Open(@ExcelFileName,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing);
CultureInfo CurrentCI = System.Threading.Thread.CurrentThread.CurrentCulture;
try
{
App.Visible = false;
App.DisplayAlerts = false;
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
ProcessExcelData(workbook);
}
finally
{
App.Quit();
Marshal.ReleaseComObject(workbook);
while (Marshal.ReleaseComObject(App) > 0) ;
workbook = null;
App = null;
GC.Collect();
Thread.CurrentThread.CurrentCulture = CurrentCI;
}
}
/// <summary>
/// 提取Excel表格資料
/// </summary>
/// <param name="InputWorkbook"></param>
/// <returns></returns>
private Excel.Workbook ProcessExcelData(Excel.Workbook InputWorkbook)
{
Excel.Sheets sheets = InputWorkbook.Worksheets;
Excel.Worksheet DataSheet = null;
foreach (Worksheet sheet in sheets)
{
if (sheet.Name.ToLower() == "sheet1")
{
DataSheet = sheet;
break;
}
}
if (null == DataSheet)
{
return InputWorkbook;
}
庫存批次表 Bll = new 庫存批次表();
庫存批次表Info Model;
object TmpObj;
Excel.Range FieldsRange = DataSheet.get_Range("A2", "K7");
System.Array FieldNames = (System.Array)FieldsRange.Formula;
for (int i = 0; i < FieldNames.GetLength(0); i++)
{
Model = new 庫存批次表Info();
TmpObj = FieldNames.GetValue(i + 1, 1);
Model.貨品ID = Convert.ToDecimal(TmpObj);
TmpObj = FieldNames.GetValue(i + 1, 2);
Model.貨品編碼 = Convert.ToDecimal(TmpObj);
TmpObj = FieldNames.GetValue(i + 1, 3);
Model.批次號 = Convert.ToString(TmpObj);
TmpObj = FieldNames.GetValue(i + 1, 4);
Model.入庫日期 = Convert.ToDateTime(TmpObj.ToString());
TmpObj = FieldNames.GetValue(i + 1, 5);
Model.入庫單號 = Convert.ToString(TmpObj);
TmpObj = FieldNames.GetValue(i + 1, 6);
Model.入庫資訊 = Convert.ToString(TmpObj);
TmpObj = FieldNames.GetValue(i + 1, 7);
Model.生產日期 = Convert.ToDateTime(TmpObj.ToString());
TmpObj = FieldNames.GetValue(i + 1, 8);
Model.過期日期 = Convert.ToDateTime(TmpObj.ToString());
TmpObj = FieldNames.GetValue(i + 1, 9);
Model.入庫數量 = Convert.ToDecimal(TmpObj);
TmpObj = FieldNames.GetValue(i + 1, 10);
Model.出庫數量 = Convert.ToDecimal(TmpObj);
TmpObj = FieldNames.GetValue(i + 1, 11);
Model.結存數量 = Convert.ToDecimal(TmpObj);
Bll.Insert(Model);
}
FieldsRange = null;
FieldNames = null;
return InputWorkbook;
}
呼叫方法:
OpenExcelFile(Server.MapPath(@"../UploadFile/")+strFileURL);