示例#1
0
        /// <summary>
        /// 文件流转成DataTable
        /// </summary>
        /// <param name="file">文件</param>
        /// <returns></returns>
        public DataTable GetExcelData(HttpPostedFileBase file)
        {
            var ext   = Path.GetExtension(file.FileName);
            var bytes = StreamToBytes(file.InputStream);

            ISheet sheet = null;

            using (var memstream = new MemoryStream(bytes))
            {
                switch (ext)
                {
                case ".xlsx":
                    sheet = new XSSFWorkbook(memstream).GetSheetAt(0);
                    break;

                case ".xls":
                    sheet = new HSSFWorkbook(memstream).GetSheetAt(0);
                    break;
                }
            }

            var dt = new DataTable();

            if (sheet == null)
            {
                return(dt);
            }

            var headerRow = sheet.GetRow(0);       //获取sheet首行

            int cellCount = headerRow.LastCellNum; //获取总列数

            for (int i = headerRow.FirstCellNum; i < cellCount; i++)
            {
                var column = new DataColumn(headerRow.GetCell(i).StringCellValue);
                dt.Columns.Add(column);
            }

            for (var i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++)
            {
                var row     = sheet.GetRow(i);
                var dataRow = dt.NewRow();

                for (int j = row.FirstCellNum; j < cellCount; j++)
                {
                    if (row.GetCell(j) != null)
                    {
                        dataRow[j] = row.GetCell(j).ToString();
                    }
                }

                dt.Rows.Add(dataRow);
            }

            return(dt);
        }
示例#2
0
        static void Main(string[] args)
        {
            using (HttpClient client = new HttpClient())
            {
                HttpResponseMessage namesF = client.GetAsync(url + 1).Result;  // List of female names
                HttpResponseMessage namesM = client.GetAsync(url + 2).Result;  // List of male names
                // HttpResponseMessage namesAll = client.GetAsync(url + 2).Result; // List of all names
                HttpResponseMessage namesU  = client.GetAsync(url + 4).Result; // List of unisex names
                List <Stream>       streams = new List <Stream>()
                {
                    namesF.Content.ReadAsStreamAsync().Result,
                                    namesM.Content.ReadAsStreamAsync().Result,
                                    namesU.Content.ReadAsStreamAsync().Result
                };

                foreach (var stream in streams)
                {
                    var sheet = new HSSFWorkbook(stream).GetSheetAt(0); // Old excel format (xls)
                    // var sheet = new XSSFWorkbook(stream).GetSheetAt(0); // New excel format (xlsx)

                    for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++) //Read Excel File
                    {
                        IRow row = sheet.GetRow(i);
                        row.ToList().ForEach(System.Console.WriteLine);
                    }
                }
            }
        }