前提准备:
1.想要成功进行WPS的导入与导出,你得先下载WPS,然后找到etapi.dll文件(路径:\Kingsoft\WPS Office\10.1.0.7520\office6),WPS安装路径看你们具体的安装路径。
2.然后在自己的ASP.NET MVC项目下的引用项右键,添加引用,把etapi.dll添加进去。
、
点击浏览进行添加
、
添加完就可以开始写代码了。
前台代码:
<form action="/Home/ImportWPS" method="post" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" value="导入" />
</form>
<input type="button" onclick="ExportWPS()" value="导出">
//需要引用JQuery
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
<script>
//导出的JQ代码
function ExportWPS() {
$.ajax({
url: "/Home/ExportWPS",
data: {},
datatype: "json",
type: "post",
async: false,
success: function (data) {
alert("導出成功!");
}
});
}
</script>
后台代码:
WPS的索引从1开始,例如(1,1)。
需要引用Excel:Using Excel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Excel;
using System.IO;
using System.Threading;
using System.Diagnostics;
using WPS文件的讀寫.Models;
namespace WPS文件的讀寫.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
//導入
[HttpPost]
public ContentResult ImportWPS(HttpPostedFileBase file)
{
List<List<string>> DataList = new List<List<string>>();
//先將選擇的文件保存到本地,然後從該文件中獲取數據
System.IO.Stream stream = file.InputStream;
string fileName = file.FileName;
Excel.Application appli = new Application();//该对象代表 ET 应用程序。包含可返回最高级对象的属性和方法。
try
{
if (fileName.LastIndexOf("\\") > -1)
{
fileName = fileName.Substring(fileName.LastIndexOf("\\") + 1);
}
var filePath = Server.MapPath(string.Format("~/UpFile", "File"));
file.SaveAs(Path.Combine(filePath, fileName));
//WPS讀取文件
Excel._Workbook wk = appli.Workbooks.Open(Path.Combine(filePath, fileName));//打開文件
Excel.Worksheet sheet = wk.Worksheets.get_Item(1);
Excel.Range range = sheet.UsedRange;//獲取表格
//string data = ((Excel.Range)range.get_Item(1, 1)).Text; //獲取表格數據的方法
int rowCount = range.Rows.Count; //行數
int columCount = range.Columns.Count; //列數
string info = "";
//從第二行開始,表頭不導入
for (int j = 2; j <= rowCount; j++)
{
info = "";
List<string> Temp = new List<string>();
for (int i = 1; i <= columCount; i++)
{
info += " " + ((Excel.Range)range.get_Item(j)).Cells[j, i].Text;
Temp.Add(((Excel.Range)range.get_Item(j)).Cells[j, i].Text);
}
DataList.Add(Temp);
System.Diagnostics.Debug.WriteLine(info);//輸出信息到輸出界面
}
appli.Quit();//退出ET應用程序
System.IO.File.Delete(Path.Combine(filePath, fileName));
return Content("<script>alert('導入成功!');</script>");
}
catch (Exception e)
{
System.Diagnostics.Debug.WriteLine("異常!");
appli.Quit();//退出ET應用程序
return Content("<script>alert('導入失敗!');</script>");
}
}
//導出
public void ExportWPS()
{
/*wsp excel导出*/
Excel.Application appli = new Application();
Excel._Workbook wk = appli.Workbooks.Add(Type.Missing);
Excel.Worksheet sheet = wk.ActiveSheet;
List<List<string>> DataList = new List<List<string>>();
//表頭的設置
List<string> Header = new List<string>();
Header.Add("L1");
Header.Add("L2");
Header.Add("L3");
Header.Add("L4");
Header.Add("L5");
DataList.Add(Header);
//數據的添加
for (var i = 0; i < 3; i++)
{
List<string> Temp = new List<string>();
Temp.Add("1");
Temp.Add("2");
Temp.Add("3");
Temp.Add("4");
Temp.Add("5");
DataList.Add(Temp);
}
//添加數據進文件
//for循環的優化
int XLength = DataList.Count(); //行數
int YLength = DataList[0].Count(); //列數--已表頭為默認列數
for (var i = 0; i < XLength; i++)
{
for (var j = 0; j < YLength; j++)
{
sheet.Cells[i + 1, j + 1] = DataList[i][j];
}
}
//保存
wk.SaveAs(Environment.GetFolderPath(Environment.SpecialFolder.Desktop)+"\\TempExportModel.xls", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
wk.Close(Type.Missing, Type.Missing, Type.Missing);
System.Runtime.InteropServices.Marshal.ReleaseComObject(wk);
System.Runtime.InteropServices.Marshal.ReleaseComObject(appli);
}
}
}
项目下载路径:https://download.csdn.net/download/laizhixue/10691046