在 EPPLUS 中读取 xlsx (2007) 文件时出错

2024-03-02

我在尝试读取 Excel 文件时遇到错误(xlsx)保存在Excel 2007 using EPPlus图书馆。

一些解决方法:

  1. 带有 EPPlus v 的 ASP.net mvc 5 应用程序4.0.4.0
  2. 用户可以从我的网站下载模板文件,然后在其中填写所需的数据,然后上传回来。文件包含4工作表,其中之一是hidden。工作簿受密码保护,工作表受保护。他们都有不同的密码。模板文件(xlsx)生产于Excel 2007 or 2010.
  3. 当用户发回文件时,我尝试使用打开并读取它EPPlus
  4. 当我发布在 Excel 2010 中填写的文件时,一切正常。但是当我从 Excel 2007 发布文件时出现异常ExcelPackage ctor.

好的。现在一些代码片段。这是我使用流上传和读取文件的初始代码。

[HttpPost]
[ValidateAntiForgeryToken]
[ActionName("ImportPublications")]
public async Task<JsonResult> AjaxImportPublications(int id, HttpPostedFileBase xlsImport) {
    AjaxExtResult result = new AjaxExtResult();

    if (xlsImport == null || xlsImport.ContentLength == 0) {
        result.Error = new[] { "Ошибка загрузки файла" };
        return Json(result);
    }

     try {
         using (var package = new ExcelPackage(xlsImport.InputStream)){ 
            // do something here
         }
         result.Success = true;
     }
     catch (Exception e) {
         result.Error = new[] { e.Message };
     }

     return Json(result);
}

上面的代码适用于 Excel 2010,但不适用于 2007。抛出异常然后调用ExcelPackage() ctor.

调试数据:

上传的文件ContentType is "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"

异常详细信息(磁盘写入错误):

Message:    "Ошибка на диске в процессе записи. (Exception from HRESULT: 0x8003001D (STG_E_WRITEFAULT))"

StackTrace: 
at OfficeOpenXml.Utils.CompoundDocument.ILockBytes.WriteAt(Int64 ulOffset, IntPtr pv, Int32 cb, UIntPtr& pcbWritten)
at OfficeOpenXml.Utils.CompoundDocument.GetLockbyte(MemoryStream stream)
at OfficeOpenXml.ExcelPackage.Load(Stream input, Stream output, String Password)
at OfficeOpenXml.ExcelPackage.Load(Stream input)
at OfficeOpenXml.ExcelPackage..ctor(Stream newStream)
at webDCReports.Controllers.MembersController.<AjaxImportPublications>d__56.MoveNext() ...

之后我尝试添加工作簿保护密码ctor参数并将代码更改为

using (var package = new ExcelPackage(xlsImport.InputStream, "my_passwrod")) {

之后我得到了新的异常类型:“流必须是读/写的”。看起来不错,因为我不保存上传的文件,所以我决定保存文件并将代码更改为(不带密码):

var fi = new FileInfo(target);    
using (var package = new ExcelPackage(fi)) {

异常详细信息是:

Message: Can not open the package. Package is an OLE compound document. If this is an encrypted package, please supply the password.
Inner exception: "The file is not an valid Package file. If the file is encrypted, please supply the password in the constructor."

此时,当我上传 2010 年保存的文件时,代码工作正常。 将工作簿密码添加到调用代码可以让我无效的密码例外。

实际上它看起来也不错,因为文件本身没有密码保护/加密。

有谁知道发生了什么事,如何解决这个问题?

重要更新:

我已经删除了woorkbook保护并成功打开文件。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 EPPLUS 中读取 xlsx (2007) 文件时出错 的相关文章

  • Elmah 不会在 MVC 应用程序中记录 http post 请求的异常 - 如果请求包含 XML

    我在 MVC4 RC 应用程序中遇到了一个奇怪的问题 在 NET 4 0上运行 我刚刚设置 Elmah 来记录异常 错误 我基本上安装了埃尔玛MVC and elmah sqlserverNuGet 包 分别为2 0 0和1 2版本 它似乎
  • 包含 ASP.Net Identity 2.0 UserManager.Users.ToListAsync 和 UserManager.FindByIdAsync 上的属性

    我正在尝试实现 Asp Net Identity 2 0 到目前为止 在以下人员的帮助下我做得很好这个博客 http typecastexception com post 2014 06 22 ASPNET Identity 20 Cust
  • 更改所选控件的输入语言

    我的应用程序中有一个文本区域 我想以编程方式单独设置文本区域的输入语言 而不影响其他控件 不幸的是 您的程序无法完成此操作 用户需要使用 Unicode 键盘或输入法编辑器 IME 由于您使用的是 C Net 平台 因此您的程序已经能够处理
  • 从另一台设备访问 Azure 模拟器

    我有两个不同的项目 Windows Phone 8 应用程序 我正在真实的物理开发设备上运行 Azure 云服务 其中包含一个简单的 WebRole 端点 其中包含 ASP NET MVC WebAPI 我的目标很简单 使用从真实设备运行的
  • 如何从重定向的查询字符串中删除项目?

    在我的基页中 我需要从查询字符串中删除一个项目并重定向 我不能使用 Request QueryString Remove foo 因为该集合是只读的 有没有什么方法可以获取查询字符串 除了该一项 而无需迭代集合并重新构建它 您可以通过处理原
  • ASP.NET 更新面板停止 jquery 工作

    我已经为 mouseenter mouseleave 以及 jquery Draggable 绑定了 jquery 事件集 div 被放置在更新面板中 当单击按钮时 信息将发送到数据库并更新更新面板 但是 当面板更新时 jquery 事件不
  • global.asax 范围和生命周期澄清

    我需要在我当前正在进行的项目中实现多个应用程序级行为 有几件事我需要弄清楚 1 在哪里以及如何定义应用程序级变量 2 这些变量的生命周期是多长 或者更准确地说 在什么情况下它们会被丢弃 应用程序池回收 应用程序二进制文件从内存中删除并在下一
  • 构建视图模型的最佳方法是什么?

    我正在使用带有实体框架的 asp net mvc 并开始学习 DDD 我正在从事包含调查的项目 这是我的域模型 public class Survey public int SurveyID get set public string Na
  • 过滤文件上传仅用于文本文件

    我使用的是 Firefox 版本 14 0 1 我需要过滤上传文件窗口以仅显示 txt files 我的浏览器不仅仅支持文本文件 text plain 我可以通过指定此格式来限制图像文件 image 但我只需要过滤文本文件在文件选择器窗口中
  • 将图像添加到 ASP.Net 中的单选按钮列表

    我正在尝试将图像添加到单选按钮列表控件 但它不起作用 我试过这个 RadioButtonList2 Items Add new ListItem String Format src Colors Dallas 625527 1 1 png
  • 是否可以在 ASP.NET Web API 和 SPA 中使用基于 cookie 的身份验证?

    我想创建基于 angularjs 前端和 ASP NET Web API 的 Web 应用程序 我需要创建安全 api 但我无法在将实施此 Web 应用程序的公司服务器上使用基于令牌的身份验证 是否可以对 SPA 和 ASP NET Web
  • 在 Asp.Net MVC 视图中使用 dropdownlistfor 和 foreach 吗?

    我有一个带有 foreach 循环的视图 用于模型的列表属性 现在 我希望能够让用户使用下拉列表设置列表中每个项目的值 但我不知道该怎么做 当它不在 foreach 循环中时 我使用过类似的东西 Html DropDownListFor m
  • 在 ASP.NET 中动态设置主题

    我有一个连接到不同域的应用程序 我没有复制和修改每个应用程序 而是在硬盘驱动器上使用相同的物理位置 但在 IIS 上使用单独的应用程序池和网站 基本上我想根据主机名更改主题 IE 用户访问 websome com 获取 websome 主题
  • 发布时出错:System.DirectoryServices.DirectoryServicesCOMException

    我在我的 asp net MVC 解决方案中使用 AD 身份验证 它在本地服务器中工作 但是当我发布它时 我收到错误 System DirectoryServices DirectoryServicesCOMException 发生操作错误
  • 即使通过 ssl,在 ViewState 中存储信用卡和定价信息是否安全?

    我有一个带有私有属性的页面 该页面在视图状态中存储信用卡对象和购物车对象 以便我可以在回发期间维护对它们的引用 顺便说一句 涉及的页面将使用 SSL 这安全吗 我不会在视图状态中存储敏感信息 ever 通过这样做 您将安全性委托给浏览器的实
  • 获取 SignalR hub 内的完整 URL

    我正在使用 SignalR 开发一个用户跟踪解决方案 作为学习 SignalR 的有趣项目 用于 ASP NET MVC 应用程序 目前我可以跟踪登录的用户以及他们在特定页面上停留的时间 如果他们移动到另一个页面 我也会跟踪该页面 并且 S
  • 使用 AJAX 或多线程加速页面加载

    我的页面有 5 个部分 每个部分大约需要 1 秒来渲染 Page Load RenderSection1 1 sec RenderSection2 1 sec RenderSection3 1 sec RenderSection4 1 se
  • ChannelFactory重用策略

    我一直在读到 ChannelFactory 的创建是昂贵的 除非有技术原因不这样做 否则应该在可能的情况下重用 ChannelFactory 或者通过某种方式缓存它们 或者使用工厂的静态实例 根据您的经验 您发现哪些 ChannelFact
  • 如何使用泛型类型的 DataContractSerializer 编写自定义序列化器?

    我想编写一个自定义序列化器 用于将会话状态存储到Azure 缓存 预览版 这意味着这个自定义序列化器必须实现IDataCacheObjectSerializer 如果我错了 请告诉我 我需要编写这个自定义序列化程序的原因是我需要序列化一些包
  • 在 .NET 中记录 StackOverflowException

    最近 我的 NET 应用程序 asp net 网站 中出现了堆栈溢出异常 我之所以知道该异常是因为它出现在我的 EventLog 中 我知道 StackOverflow 异常无法被捕获或处理 但是有没有办法在它杀死您的应用程序之前记录它 我

随机推荐

  • Excel 检测并跟踪任何工作表中的(值)变化

    我已经设法编写了一个代码来检测任何工作表中特定单元格的值变化 但我一直在努力构建一些检测和跟踪范围 值 变化的代码 例如 如果用户决定复制并粘贴某些范围的数据 假设超过 1 个单元格 宏将不会捕获它 用户选择一个范围 然后在仍选择范围的情况
  • 反转动画

    我有一个 ImageView 当它添加到布局中时它会变得动画 当它被删除时 我想反转相同的动画 有没有办法在android中反转动画而不需要重新编码和反转参数 不 遗憾的是你不能用动画对象来做到这一点 但您可以使用插值器来模拟它 该插值器将
  • IPython Notebook - 在 Javascript 中检测内核是否繁忙/空闲

    我目前正在尝试使用 IPython 笔记本获得交互式绘图 我遇到的问题之一是 当通过 javascript 中的 IPython notebook kernel execute 方法执行 Python 代码时 我无法知道该代码何时完成执行
  • Jenkins - 同时运行单个构建的实例

    我希望能够同时运行同一个 Jenkins 作业的多个构建 Example 构建 jenkins job 1 使用参数 A 调用 ant 脚本 构建 jenkins job 1 使用参数 B 调用 ant 脚本 根据需要重复 作业的每个实例同
  • 是否可以将 Series 附加到 DataFrame 的行而不先创建列表?

    我有一些数据正在尝试组织成DataFrame in Pandas 我试图让每一行Series并将其附加到DataFrame 我找到了一种方法 通过附加Series到一个空的list然后转换list of Series to a DataFr
  • 如何在 ggtern 中显示数据的真实值 (%)?

    我希望得到与下例所示大致相同的结果 我在这两个函数之间犹豫是否要得到这个结果 geom crosshair tern and scale X continuous 汉密尔顿 NE 和费里 M 2018 ggtern 使用 ggplot2 的
  • 在 Node.js 的回调周围放置返回值

    一点背景知识 我使用node js 发现通过返回可以避免许多错误all异步代码中的回调 例如 function useMyAsyncFunc stuff c callback myAsyncFunc stuff a stuff b c fu
  • 裸露和非裸露 Git 存储库的区别[重复]

    这个问题在这里已经有答案了 在 git 中 我只是想知道裸存储库和非裸存储库之间有什么区别 我知道裸存储库通常只是推送到其中并且不会在其中进行更改 除此之外 它与非裸存储库有何不同 裸存储库只有 git 文件夹 没有签出的源代码树 裸存储库
  • 在 CakePHP 中保存空间数据

    我在使用 saveAll 在 CakePHP 中保存空间数据时遇到问题 我真的不想手动编写查询 在 CakePHP 中处理空间数据 https stackoverflow com questions 4598834 handling spa
  • timeout 和 browserTimeout 的区别

    我刚刚开始使用 Selenium Grid 我当前面临的问题是测试崩溃时 浏览器永远保持打开状态 直到我到达并亲自关闭它 以便可以开始下一组测试 我注意到 NODE 配置有两种超时配置 一种用于 timeout另一个用于 browserTi
  • 有没有办法在不加载rubygems的情况下调用ruby1.9?

    所以 ruby 1 9 真的很好 因为它会自动需要 ruby gems 因此当你调用require somegem 不需要首先需要 ruby gems 它就可以工作 这通常很棒 但我有大量使用 ruby 的 shell 脚本 它们通常不依赖
  • 对 static constexpr char[] 的未定义引用

    我想要一个static const char我班上的数组 GCC 抱怨并告诉我我应该使用constexpr 尽管现在它告诉我这是一个未定义的引用 如果我将数组设置为非成员 那么它就会编译 到底是怎么回事 hpp struct foo voi
  • 查找java类中所有对方法的调用

    我有一个包含很多课程的庞大项目 我有一个非常具体的课程 让我们命名它SuperFoo 我需要找到对该方法的所有调用equals 带类型参数Superfoo 希望它是清楚的 所以 再一次 在数千个java文件 或字节码 中我想找到对该方法的所
  • 如何防止 del *.txt 出现“找不到”错误消息?

    在 Windows 批处理文件中 此行 del txt 将给出错误 警告消息 Could Not Find C txt 如果没有与模式 txt 匹配的文件 有没有办法阻止该消息 if exist txt del txt
  • PHP 人类日期范围/持续时间格式

    PHP 制作得非常好 我想知道是否有一个函数可以满足我的需要 对于持续超过一天的事件 人类的格式化方式很复杂 例子 事件一 从 2015 04 20 到 2015 04 22 可以针对人类进行格式化 如下所示 2015 年 4 月 20 2
  • 一次阻塞收集进程 n 个项目 - 完成 1 个项目后立即继续

    我有以下场景 我将数据库中的 50 个作业放入阻塞集合中 每项工作都是长期运行的 可能是 所以我想在单独的线程中运行它们 我知道 最好将它们作为 Task WhenAll 运行并让 TPL 弄清楚 但我想控制同时运行的数量 假设我想同时运行
  • Spring Boot不加载静态资源,它取决于RequestMapping深度

    我在 Spring Boot 应用程序上加载静态文件夹下的文件时遇到问题 问题是 RequestMapping 深度超过 2 之类的 RequestMapping spring xyz The RequestMapping spring 单
  • 为什么结果是NaN?

    var a 10 sayHi function sayHi var a a 10 alert a return a alert a alert sayHi 10 为什么上面的结果不是20和30 我觉得第一个是20 然后是30 functio
  • 如何将 Ada.Real_TIme.Time 转换为字符串?

    我想写一个Ada Real Time Time http www adaic com standards 05rm html RM D 8 html在一个文件中 我怎样才能做到这一点 Thanks 您可以使用Ada Real Time Sp
  • 在 EPPLUS 中读取 xlsx (2007) 文件时出错

    我在尝试读取 Excel 文件时遇到错误 xlsx 保存在Excel 2007 using EPPlus图书馆 一些解决方法 带有 EPPlus v 的 ASP net mvc 5 应用程序4 0 4 0 用户可以从我的网站下载模板文件 然