【问题标题】:Reading Excel from URL with memory stream使用内存流从 URL 读取 Excel
【发布时间】:2016-06-30 00:25:03
【问题描述】:

我正在将一个 excel 文件上传到 Azure,我正在关注 this url。 现在我必须阅读这个带有 URL 的 excel 文件(我不想下载它)。 我正在这样做

var webRequest = HttpWebRequest.Create("url_of_excel_in_Azure") as HttpWebRequest;
var webResponse = webRequest.GetResponse();

using (var webResponseStream = webResponse.GetResponseStream())
using (var memoryStream = new MemoryStream())
{
    webResponseStream.CopyTo(memoryStream);
    using (var excelPackage = new ExcelPackage(memoryStream))
    {
        var value = excelPackage.Workbook.Worksheets.First().Cells[1, 1].Value;

    }
}

我有一个特定的excel格式,即它只有4列,但是多行,从上面的代码我可以访问第一行的第一列值,我如何在这些单元格上应用循环来读取4列中的所有行. 如果我写

  excelPackage.Workbook.Worksheets.First().Cells.Count()

它给了我所有列的计数,包括哪些是空白的。

我可以跳过这个上传功能,因为我只需要从发布的文件创建数据表,如果有人可以建议我如何在不上传的情况下从发布的文件创建数据表,那也很好。 这是我的 Excel 的格式

【问题讨论】:

    标签: c# excel azure azure-blob-storage memorystream


    【解决方案1】:

    使用 memoryStream.Position =0 倒带流;

    【讨论】:

      【解决方案2】:

      您可以使用下面的代码读取所有行的内容并将它们放入数据表中。

      Excel.Worksheet worksheet = excelPackage.Workbook.Worksheets.get_Item(1);
      
      int iRowCount = worksheet.UsedRange.Rows.Count;
      int iColCount = worksheet.UsedRange.Columns.Count;
      
      Excel.Range range;
      
      for (int iRow = 2; iRow <= iRowCount; iRow++) {
          for (int iCol = 1; iCol <= iColCount; iCol++)
              range = (Excel.Range)worksheet.Cells[iRow, iCol];
      
              string content = range.Text.ToString();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-15
        • 1970-01-01
        • 1970-01-01
        • 2011-09-11
        相关资源
        最近更新 更多