2016-03-14 64 views
1

我正在將一個excel文件上傳到Azure,我正在關注this url。 現在我必須閱讀這個excel文件的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() 

它給我的所有列,包括它們是空白的計數。

我可以跳過這個上傳功能,因爲我需要從發佈的文件中創建DataTable。如果有人可以建議如何從發佈的文件創建datatable而不上傳它,那也不錯。 這是我的Excel格式 excel

回答

0

將回流與memoryStream.Position = 0;

0

您可以使用下面的代碼讀取所有行的內容並將它們放入數據表中。

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(); 
}