插件:Aspose.Cells

没有安装office插件也能使用;

导出:不能使用ajax异步·

        /// <summary>
/// 导出试题
/// </summary>
/// <param name="userId">用户Id</param>
/// <param name="courseId">课程Id</param>
/// <returns></returns>
[HttpGet]
public FilePathResult ExportQuestions(int userId, int courseId)
{
// 工作薄
Workbook BuildReport_WorkBook = new Workbook();
//sheets集合
Worksheets sheets = BuildReport_WorkBook.Worksheets;
//试题表
Worksheet BuildReport_WorkSheet = BuildReport_WorkBook.Worksheets[]; // sheet1
BuildReport_WorkBook.Worksheets[].Name = "试题表";
BuildReport_WorkSheet.FreezePanes(, , , ); //冻结第一行
BuildReport_WorkSheet.AutoFitColumns();//让各列自适应宽度
Cells BuildReportCells = BuildReport_WorkSheet.Cells; //单元格 //表头
BuildReportCells[, ].PutValue("试题Id");
BuildReportCells[, ].PutValue("课程Id");
BuildReportCells[, ].PutValue("试题类型"); //第二个sheet
BuildReport_WorkBook.Worksheets.Add("试题描述");
Worksheet BuildReport_WorkSheet_Desc = BuildReport_WorkBook.Worksheets["试题描述"]; //sheet2
BuildReport_WorkSheet_Desc.FreezePanes(, , , ); //冻结第一行
Cells BuildReportCells_Desc = BuildReport_WorkSheet_Desc.Cells; //表头
BuildReportCells_Desc[, ].PutValue("试题描述Id");
BuildReportCells_Desc[, ].PutValue("试题Id");
BuildReportCells_Desc[, ].PutValue("试题描述");
BuildReportCells_Desc[, ].PutValue("试题解析");
BuildReportCells_Desc[, ].PutValue("试题描述(不包含html字符)"); //列
BuildReportCells[i, ].PutValue(item.Id);
BuildReportCells[i, ].PutValue(item.CourseId);
BuildReportCells[i, ].PutValue(item.QuestionType); BuildReportCells_Desc[j, ].PutValue(questionDesc.ID);
BuildReportCells_Desc[j, ].PutValue(questionDesc.QuestionId);
BuildReportCells_Desc[j, ].PutValue(questionDesc.Description);
BuildReportCells_Desc[j, ].PutValue(questionDesc.Analyses); //文件路径
string fileDirPath = "/Downloads/试题" + userId + "_" + courseId;
string downPath = Server.MapPath(fileDirPath);
if (!Directory.Exists(downPath))
{
Directory.CreateDirectory(downPath);
}
System.IO.File.SetAttributes(downPath, FileAttributes.Normal); string nowTime = DateTime.Now.ToString("yyyyMMddHHmmssfff");
string tempFile = Path.GetTempFileName();
string saveFile = Server.MapPath(fileDirPath + "/" + "试题" + "_" + userId + "_" + courseId + ".xls");
BuildReport_WorkBook.Save(saveFile); return File(saveFile, "application/octet-stream", "试题" + "_" + userId + "_" + courseId + ".xls");
}

导出

导入: view,

需要注意2个问题:
1. 注意给form表单加上enctype = "multipart/form-data" 属性,否则会导致Action的参数HttpPostedFileBase 对象接收不到文件。
2. 注意文件大小,IIS中默认上传的文件大小为4MB ,超过这大小的文件需要在修改配置文件。
 

<div  style="display:none" >
<div id="divImportQuestions" class="easyui-dialog" title="导入试题" closed="true" style="width:400px;height:200px;padding:10px;" data-options="iconCls:'icon-save',modal:true">
@using (Html.BeginForm("ImportQuestions", "ManageCourse", FormMethod.Post, new { enctype = "multipart/form-data", id = "frmImport" }))
{
<input id="fileImport" type="file" name="fileImport" />
<div style="padding:5px;text-align:center;">
<a id="btnCommit" href="javascript:void(0);" onclick="ImportQuestions()" class="easyui-linkbutton" iconcls="icon-ok">确 定</a>
<a href="javascript:void(0);" onclick="top.ClosedlgWindow();" class="easyui-linkbutton" iconcls="icon-cancel">取 消</a>
</div>
<input id="hidUserId" type="hidden" name="hidUserId" />
<input id="hidCourseId" type="hidden" name="hidCourseId" />
<input id="hidUserName" type="hidden" name="hidUserName" />
}
@*<form id="frmImport" action="/admin/ManageCourse/ImportQuestions" method="post" enctype="multipart/form-data">
<input id="fileImport" type="file" name="fileImport" />
<div style="padding:5px;text-align:center;">
<a id="btnCommit" href="javascript:void(0);" onclick="ImportQuestions()" class="easyui-linkbutton" iconcls="icon-ok">确 定</a>
<a href="javascript:void(0);" onclick="top.ClosedlgWindow();" class="easyui-linkbutton" iconcls="icon-cancel">取 消</a>
</div>
<input id="hidUserId" type="hidden" name="hidUserId" />
<input id="hidCourseId" type="hidden" name="hidCourseId" />
</form>*@
</div>
</div>

导入: controller

/// <summary>
/// 导入试题
/// </summary>
/// <param name="userId">用户Id</param>
/// <param name="courseId">课程Id</param>
/// <returns>int userId, int courseId,</returns>
[HttpPost]
public ActionResult ImportQuestions(HttpPostedFileBase upFileBase)
{
HttpPostedFileBase fileBase = Request.Files["fileImport"];
if (fileBase != null)
{
#region 保存文件 string fileName = Path.GetFileName(fileBase.FileName);
string fileNameNoExt = Path.GetFileNameWithoutExtension(fileBase.FileName);
string extension = Path.GetExtension(fileName);
//if (extension.ToLower() != ".zip") //extension.ToLower() != ".xls" || extension.ToLower() != ".xlsx" ||
//{
// //window.location.href='@Url.Action('a','b')'
// return Content("<script type='text/javascript'>alert('请上传zip格式的压缩文件');window.location.href='/admin/ImportQuestions';</script>");
//} string filePath = "/UploadFile/试题/"; // +DateTime.Now.ToString("yyyyMMdd") + "/"; if (!Directory.Exists(Server.MapPath(filePath))) //文件夹
{
Directory.CreateDirectory(Server.MapPath(filePath));
}
string nowTime = DateTime.Now.ToString("yyyyMMddHHmmssfff");
string fullFileName = Server.MapPath(filePath + nowTime + "_" + userId + "_" + courseId + "_" + fileName);//文件名
fileBase.SaveAs(fullFileName); //保存在服务器 #endregion string fileFullName = Path.Combine(strFileUrl, Path.GetFileName(file.Name)); #region 导入EXECL Workbook BuildReport_WorkBook = new Workbook();
BuildReport_WorkBook.Open(fileFullName); Worksheets sheets = BuildReport_WorkBook.Worksheets; //试题表
Worksheet workSheetQuestion = BuildReport_WorkBook.Worksheets["试题表"]; // sheet1
Cells cellsQuestion = workSheetQuestion.Cells; //单元格
Worksheet workSheetDesc = BuildReport_WorkBook.Worksheets["试题描述"]; //sheet2
Cells cellsDesc = workSheetDesc.Cells; //试题表
for (int i = ; i < cellsQuestion.MaxDataRow + ; i++)
{
#region 试题表 Question modQuestion = new Question();//实体
int questionId = cellsQuestion[i, ].IntValue;
dicQuestion[i] = cellsQuestion[i, ].IntValue;
modQuestion.CourseId = cellsQuestion[i, ].IntValue;
modQuestion.QuestionType = cellsQuestion[i, ].IntValue; //数据库操作 } for (int j = ; j < cellsDesc.MaxDataRow + ; j++)
{
int questionDescFK = cellsDesc[j, ].IntValue;
if (questionId == questionDescFK)
{
Question_Desc modQuestionDesc = new Question_Desc(); //实体
modQuestionDesc.QuestionId = questionIdNew; //新的
modQuestionDesc.Description = cellsDesc[j, ].StringValue.Trim();
modQuestionDesc.Analyses = cellsDesc[j, ].StringValue.Trim();
modQuestionDesc.DescriptionText = cellsDesc[j, ].StringValue.Trim(); //数据库操作
}
} #endregion } return View();
}

导入Controller

● 由于接收多个文件,所以控制器方法的参数变成了IEnumerable<HttpPostedFileBase> files
● 变量files与前台视图的name属性值对应
● 如果没有指定的文件夹,就创建一个文件夹

为什么使用HttpPostedFileBase而不是FormCollection来接收文件

public sealed class FormCollection : NameValueCollection, IValueProvider

可见,FormCollection是键值集合,键是string类型,值是string类型,而上传的文件类型不是string,所以不能用FormCollection作为参数来接收文件。

参考资料:
 

MVC中的文件上传http://blog.sina.com.cn/s/blog_75a555e40101q8i7.html

 
Confusing required maxRequestLength and maxAllowedContentLength settings
 
关于MVC4.0 WebAPI上传图片重命名以及图文结合
 
ASP.NET Web Api Self Host大文件上传功能
 
 
首发地址:http://www.yuanxj.net/2014/02/upladfile/

Aspose.Cells导入导出execl的更多相关文章

  1. Aspose.Cells 导入导出EXCEL(转)

    Aspose.Cells 导入导出EXCEL      修改样式        Workbook workbook = new Workbook(); //工作簿          Worksheet ...

  2. NPOI、MyXls、Aspose.Cells 导入导出Excel(转)

    Excel导入及导出问题产生: 从接触.net到现在一直在维护一个DataTable导s出到Excel的类,时不时还会维护一个导入类.以下是时不时就会出现的问题: 导出问题: 如果是asp.net,你 ...

  3. C# WinForm使用Aspose.Cells.dll 导出导入Excel/Doc 完整实例教程

    1.添加引用: Aspose.Cells.dll(我们就叫工具包吧,可以从网上下载.关于它的操作我在“Aspose.Cells操作说明 中文版 下载 Aspose C# 导出Excel 实例”一文中的 ...

  4. Aspose.Cells.dll操作execl

    附件:Aspose.Cells.dll 1.创建execl(不需要服务器或者客户端安装office) public void DCExexl(DataTable dt) {  Workbook wb ...

  5. Asp.net & Aspose.cells 导入

    Workbook workBook = new Workbook(this.fuFile.FileContent); Aspose.Cells.Worksheet sheet = workBook.W ...

  6. 依赖Aspose.Cells Excel 导出

    public static void SaveExcel() { //新建工作簿 Workbook workbook = new Workbook(); //工作簿 Worksheet sheet = ...

  7. Aspose.Cells.dll引用导入导出Excel

    Aspose.Cells 导入导出EXCEL 文章出处:http://hi.baidu.com/leilongbing/item/c11467e1819e5417595dd8c1 修改样式       ...

  8. C# WinForm 导出导入Excel/Doc 完整实例教程[使用Aspose.Cells.dll]

    [csharp] view plain copy 1.添加引用: Aspose.Cells.dll(我们就叫工具包吧,可以从网上下载.关于它的操作我在“Aspose.Cells操作说明 中文版 下载 ...

  9. 【转】 (C#)利用Aspose.Cells组件导入导出excel文件

    Aspose.Cells组件可以不依赖excel来导入导出excel文件: 导入: public static System.Data.DataTable ReadExcel(String strFi ...

随机推荐

  1. spring分布式事务学习笔记(2)

    此文已由作者夏昀授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Model类如下:package com.xy.model 1 package com.xy.model;   ...

  2. 解决:kali linux 在vmware 虚拟机中使用bridge模式上网的问题

    安装kali后,使用独立ip上网,但是设置bridge模式后依然上不了网,后来查了好多资料才解决。 能ping通网页,能ping通DNS,就是不能打开网页。 最后的原因是主机的防火墙拦截,把防火墙关了 ...

  3. (原创)E - Straight Shot Gym - 101652R

    解题思路:这道题的题意就是给你n,总距离X,速度v:以及n组数据:人行道的左端点和右端点,以及人行道的速度(竖直方向),如果从(0,0)到(X,0)的时间小于2X/v,则输出其时间,否则输出”Too ...

  4. phaser小游戏框架学习中的屏幕适配

    这篇博客主要讲一下上一篇博客的右侧和底部出现的问题.就是页面会有偏移量.说一下这个产生的原因吧. 一开始在构建html页面的时候,习惯性的在页面中加了 <meta name="view ...

  5. nagios安装使用指南

    话不多说,下面开始,nagios具体的介绍,可以搜一下,这篇文章为作者在实际操作中整理出来,写出来的都是负责人的内容~ 环境准备 此文档共用2台服务器的配置,操作系统均为centOS6.7,安装用户都 ...

  6. 通过IDEA及hadoop平台实现k-means聚类算法

    由于实验室任务方向变更,本文不再更新~ 有段时间没有操作过,发现自己忘记一些步骤了,这篇文章会记录相关步骤,并随时进行补充修改. 1 基础步骤,即相关环境部署及数据准备 数据文件类型为.csv文件,e ...

  7. HDU-Digital Roots(思维+大数字符串模拟)

    The digital root of a positive integer is found by summing the digits of the integer. If the resulti ...

  8. 毕业设计 python opencv实现车牌识别 界面

    主要代码参考https://blog.csdn.net/wzh191920/article/details/79589506 GitHub:https://github.com/yinghualuow ...

  9. The MathType DLL cannot be found 一劳永逸的方法

    可能会看到下面的情况,然后实际上我们也能用过外部打开直接使用,那要你何用? 于是,我们找到这个文件,删除就OK 反正我写完论文就卸载了...

  10. Codeforces Round #339 (Div. 2) A

    Description Programmer Rostislav got seriously interested in the Link/Cut Tree data structure, which ...