2013-12-23 4 views
1

Ниже приведен пример кода ниже с помощью файла NPOI.dll. Я могу прочитать файл EXCEL (то есть Excel будет храниться в системе, например, D:/Jamal/Test.xls. Затем dll легко читает содержимое, но мне нужно прочитать загруженный файл Excel, не сохраняя его в любом месте до этого. Файл excelfile HTTPPOSTEDFILEBASE имеет значение для файла Excel, но мне нужно знать, как читать его с помощью NPOI DLLsКак прочитать загруженный файл Excel с помощью NPOI без сохранения на сервере или в проекте

public List<string> SendInvitesExcelFile1(List<String> CorrectMailIDs, 
            ListInvites Invites, HttpPostedFileBase excelfile) 
{ 
     List<string> mailids = new List<string>(); 
     //string filename = (excelfile.FileName).ToString(); 
     HSSFWorkbook hssfwb; 
    // using (FileStream file = new FileStream(@"D:\test.xls", FileMode.Open, FileAccess.Read)) 

     using (FileStream file = new FileStream(excelFile.FileName, FileMode.Open, FileAccess.Read)) 
     { 
      hssfwb = new HSSFWorkbook(file); 
     } 

     Sheet sheet = hssfwb.GetSheet("sheet1"); 
     for (int row = 0; row <= sheet.LastRowNum; row++) 
     { 
      if (sheet.GetRow(row) != null) //null is when the row only contains empty cells 
      { 
       mailids.Add(sheet.GetRow(row).GetCell(0).ToString()); 
      } 
     } 
     return mailids; 

ответ

0

вы можете использовать MemoryStream, так что вы должны быть в состоянии получить repsonse байтового массива и открыть таблицу. Я unsure, если WorkbookFactory обнаружит тип файла из MemoryStream, поэтому вам может потребоваться указать пользователям тот формат, который вам нужен.

4

Я столкнулся с той же проблемой, и решил ее с помощью Inpu поток. Я вставляю код для справки.

[HttpPost] 
    public DataTable PostValues(HttpPostedFileBase file) 
    { 
     ISheet sheet; 
     string filename = Path.GetFileName(Server.MapPath(file.FileName)); 
     var fileExt = Path.GetExtension(filename); 
     if (fileExt == ".xls") 
     { 
      HSSFWorkbook hssfwb = new HSSFWorkbook(file.InputStream); 
      sheet = hssfwb.GetSheetAt(0); 
      } 
     else    
      { 
      XSSFWorkbook hssfwb = new XSSFWorkbook(file.InputStream); 
      sheet = hssfwb.GetSheetAt(0); 
      } 

     DataTable table = new DataTable(); 
     IRow headerRow = sheet.GetRow(0); 
     int cellCount = headerRow.LastCellNum; 
     for (int i = headerRow.FirstCellNum; i < cellCount; i++) 
     { 
     DataColumn column = new DataColumn(headerRow.GetCell(i).StringCellValue); 
     table.Columns.Add(column); 
     } 
     int rowCount = sheet.LastRowNum; 
     for (int i = (sheet.FirstRowNum); i < sheet.LastRowNum; i++) 
     { 
     IRow row = sheet.GetRow(i); 
     DataRow dataRow = table.NewRow(); 
     for (int j = row.FirstCellNum; j < cellCount; j++) 
     { 
      if (row.GetCell(j) != null) 
      { 
      dataRow[j] = row.GetCell(j).ToString(); 
      } 
     } 
    table.Rows.Add(dataRow); 
         } 
     return table; 
     } 
Смежные вопросы