nopcommerce写操作期间发生磁盘错误。 (来自HRESULT的异常:0x8003001D(STG_E_WRITEFAULT))

时间:2017-12-07 06:01:20

标签: c# asp.net-mvc excel nopcommerce-3.90

  

我正在使用nopcommerce解决方案3.90,同时导入产品,   从excel文件我得到这个例外。我的代码如下

public virtual void ImportProductsFromXlsx(Stream stream)
    {
        try
        {
            #region Import business Logic
            using (var xlPackage = new ExcelPackage(stream))
            {
                //get the first worksheet in the workbook
                var worksheet = xlPackage.Workbook.Worksheets.FirstOrDefault();

                if (worksheet == null)
                    throw new NopException("No worksheet found");

                //the columns
                var properties = GetPropertiesByExcelCells<Product>
 (worksheet);

                var manager = new PropertyManager<Product>
 (properties);

                var attributProperties = new[]
.....
.....
 }
}

栈跟踪: -

  

at OfficeOpenXml.Utils.CompoundDocument.ILockBytes.WriteAt(Int64   ulOffset,IntPtr pv,Int32 cb,UIntPtr&amp; pcbWritten)at   OfficeOpenXml.Utils.CompoundDocument.GetLockbyte(MemoryStream流)   在OfficeOpenXml.ExcelPackage.Load(流输入,流输出,字符串   密码)在OfficeOpenXml.ExcelPackage.Load(流输入)处   OfficeOpenXml.ExcelPackage..ctor(Stream newStream)at   Nop.Services.ExportImport.ImportManager.ImportProductsFromXlsx(流   流)   d:\ ARSH \ nop3.90 \库\ Nop.Services \ ExportImport \ ImportManager.cs:行   330

我尝试的解决方案: -

  
      
  1. 使用.xlsx扩展名重新保存要上传的文件。
  2.   
  3. 使用Memorystream对象。
  4.   
  5. 添加文件名称(Worksheets.Add(“工作表名称”);)
  6.   
  7. 删除标题文本(即名称,描述等标题列)
  8.         

    P.S。我正在使用Nopcommerce。这是内置的导入代码   产品

1 个答案:

答案 0 :(得分:1)

请尝试使用excel 2010+,因为早期版本的excel在加密/解密算法方面有所不同。

您可以阅读有关加密/解密here的更多信息。