作者:老杨 撰写时间:2019-04-16
选择需要上传的Word文档,将选中的Excel文档保存至指定的项目中,将保存的Excel文档里边全部内容传到视图中,用Table形式将Excel文档内容显示,并将文件保存至指定项目中去
Excel图内容如下:
操作图:
操作完成图:
操作完成后文件保存到指定位置:
视图代码如下:(视图HTML)
视图方法:
解析:先选中文件,声明FormData,将选中的文件添加至FormData中,用ajax提交,声明数组,将获取到的数据丢到数组中,for循环遍历全部的数据显示于Table中。
控制器代码如下:
publicActionResult JXGNTheTestCase1(HttpPostedFileBase file)
{
Microsoft.Office.Interop.Excel.Application excel = null;//声明一个空的Excel对象
List<List<object>> myListone =newList<List<object>>();//二维列表(列表A嵌套列表B,显示AB数据)
try
{
string fileName =file.FileName;//获取文件名
string path = base.Server.MapPath("//" + fileName);//获取文件保存路径
file.SaveAs(path);///保存文件
DataSet myData = newDataSet();
excel = newMicrosoft.Office.Interop.Excel.Application();//lauch excel application
if (excel == null)
{
Response.Write("<script>alert('Can'taccess excel')</script>");
}
else
{
excel.Visible = false; excel.UserControl= true;
int indexOne = 0;
string strConn = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;DataSource={0};Extended Properties='Excel 12.0;HDR=Yes;IMEX=1;'", path);
OleDbDataAdapter myCommand = newOleDbDataAdapter("SELECT * FROM[测试$]", strConn);//Excel文件名称
myCommand.Fill(myData);
for (int i = indexOne; i< myData.Tables[0].Rows.Count; i++) //获取数据
{
string DataRow = "";
List<object> myList = newList<object>();
int count = 0;
for (int j = 0; j <myData.Tables[0].Columns.Count; j++)
{
DataRow =myData.Tables[0].Rows[i][j].ToString();
myList.Add(DataRow);
if (DataRow == "")
{
count++;
}
}
if (count <myData.Tables[0].Columns.Count)
{
myListone.Add(myList);
}
}
for (int i = 0; i <myListone.Count; i++)
{
List<object> myList = myListone[i];
string row =myList[0].ToString();// 获取内容
}
}
}
catch (Exception e)
{
string strMessges =e.Message.ToString();
}
finally
{
excel.Quit(); excel = null;
Process[] procs = Process.GetProcessesByName("excel");
foreach (Process pro in procs)
{
pro.Kill();//没有更好的方法,只有杀掉进程
}
GC.Collect();
}
return Json(myListone, JsonRequestBehavior.AllowGet);
}
注:使用该方法是需添加此引用,如下图:
选择需要上传的Word文档,将选中的Excel文档保存至指定的项目中,将保存的Excel文档里边全部内容传到视图中,用Table形式将Excel文档内容显示,并将文件保存至指定项目中去
Excel图内容如下:
操作图:
操作完成图:
操作完成后文件保存到指定位置:
视图代码如下:(视图HTML)
视图方法:
解析:先选中文件,声明FormData,将选中的文件添加至FormData中,用ajax提交,声明数组,将获取到的数据丢到数组中,for循环遍历全部的数据显示于Table中。
控制器代码如下:
publicActionResult JXGNTheTestCase1(HttpPostedFileBase file)
{
Microsoft.Office.Interop.Excel.Application excel = null;//声明一个空的Excel对象
List<List<object>> myListone =newList<List<object>>();//二维列表(列表A嵌套列表B,显示AB数据)
try
{
string fileName =file.FileName;//获取文件名
string path = base.Server.MapPath("//" + fileName);//获取文件保存路径
file.SaveAs(path);///保存文件
DataSet myData = newDataSet();
excel = newMicrosoft.Office.Interop.Excel.Application();//lauch excel application
if (excel == null)
{
Response.Write("<script>alert('Can'taccess excel')</script>");
}
else
{
excel.Visible = false; excel.UserControl= true;
int indexOne = 0;
string strConn = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;DataSource={0};Extended Properties='Excel 12.0;HDR=Yes;IMEX=1;'", path);
OleDbDataAdapter myCommand = newOleDbDataAdapter("SELECT * FROM[测试$]", strConn);//Excel文件名称
myCommand.Fill(myData);
for (int i = indexOne; i< myData.Tables[0].Rows.Count; i++) //获取数据
{
string DataRow = "";
List<object> myList = newList<object>();
int count = 0;
for (int j = 0; j <myData.Tables[0].Columns.Count; j++)
{
DataRow =myData.Tables[0].Rows[i][j].ToString();
myList.Add(DataRow);
if (DataRow == "")
{
count++;
}
}
if (count <myData.Tables[0].Columns.Count)
{
myListone.Add(myList);
}
}
for (int i = 0; i <myListone.Count; i++)
{
List<object> myList = myListone[i];
string row =myList[0].ToString();// 获取内容
}
}
}
catch (Exception e)
{
string strMessges =e.Message.ToString();
}
finally
{
excel.Quit(); excel = null;
Process[] procs = Process.GetProcessesByName("excel");
foreach (Process pro in procs)
{
pro.Kill();//没有更好的方法,只有杀掉进程
}
GC.Collect();
}
return Json(myListone, JsonRequestBehavior.AllowGet);
}
注:使用该方法是需添加此引用,如下图: