Esempio n. 1
0
        /// <summary>
        /// 读取A1相关信息 初始化excel实体
        /// </summary>
        bool readHeader()
        {
            bool result = true;

            if (fileName.Contains("轨道区段与道岔"))
            {
                tm    = new TableMapping(fileName);
                sheet = (HSSFSheet)workbook.GetSheetAt(0);
            }
            else
            {
                //获取A1内容
                sheet = (HSSFSheet)workbook.GetSheetAt(0);
                System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
                rows.MoveNext();
                HSSFRow row = (HSSFRow)rows.Current;
                cell = (HSSFCell)row.GetCell(0);
                if (cell != null && !string.IsNullOrEmpty(cell.ToString()))
                {
                    tm           = new TableMapping(cell.ToString().Trim());
                    tm.SheetName = sheet.SheetName;
                    if (string.IsNullOrEmpty(tm.header))
                    {
                        reportError("没有获取到类型数据");
                        result = false;
                    }
                }
                else
                {
                    reportError("A1无数据");
                    result = false;
                }
            }
            return(result);
        }
Esempio n. 2
0
        /// <summary>读取excel
        /// 默认第一行为标头
        /// </summary>
        /// <param name="strFileName">excel文档路径</param>
        /// <returns></returns>
        public static DataTable ImportExcel(Stream fileStream)
        {
            DataTable    dt = new DataTable();
            HSSFWorkbook hssfworkbook;

            hssfworkbook = new HSSFWorkbook(fileStream);
            HSSFSheet sheet = (HSSFSheet)hssfworkbook.GetSheetAt(0);

            System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
            HSSFRow headerRow = (HSSFRow)sheet.GetRow(0);
            int     cellCount = headerRow.LastCellNum;

            for (int j = 0; j < cellCount; j++)
            {
                HSSFCell cell = (HSSFCell)headerRow.GetCell(j);
                dt.Columns.Add(cell.ToString());
            }
            for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++)
            {
                HSSFRow row     = (HSSFRow)sheet.GetRow(i);
                DataRow 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);
        }
Esempio n. 3
0
        /// <summary>
        /// 将Excel转成DataTable
        /// </summary>
        /// <param name="fileupload">上传控件实例引用</param>
        /// <returns></returns>
        public static DataTable ImportExcelByNPOI(FileUpload fileupload)
        {
            DataTable dt = new DataTable();

            using (FileStream file = new FileStream(fileupload.PostedFile.FileName, FileMode.Open, FileAccess.Read))
            {
                HSSFWorkbook hssfworkbook           = new HSSFWorkbook(file);
                HSSFSheet    sheet                  = (HSSFSheet)hssfworkbook.GetSheetAt(0);
                System.Collections.IEnumerator rows = sheet.GetRowEnumerator();

                //将Excel内数据读取到DataTable 中
                while (rows.MoveNext())
                {
                    HSSFRow row = (HSSFRow)rows.Current;
                    DataRow dr  = dt.NewRow();

                    for (int i = 0; i < row.LastCellNum; i++)
                    {
                        HSSFCell cell = (HSSFCell)row.GetCell(i);
                        if (cell == null)
                        {
                            dr[i] = null;
                        }
                        else
                        {
                            dr[i] = cell.ToString();
                        }
                    }
                    dt.Rows.Add(dr);
                }
            }
            return(dt);
        }
            /// <summary>读取excel  
            /// 默认第一行为标头  
            /// </summary>  
            /// <param name="path">excel文档路径</param>  
            /// <returns></returns>  
            public static DataTable RenderDataTableFromExcel(string path)
            {
                DataTable dt = new DataTable();

                HSSFWorkbook hssfworkbook;
                using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
                {
                    hssfworkbook = new HSSFWorkbook(file);
                }
                HSSFSheet sheet = hssfworkbook.GetSheetAt(0);
                System.Collections.IEnumerator rows = sheet.GetRowEnumerator();

                HSSFRow headerRow = sheet.GetRow(0);
                int cellCount = headerRow.LastCellNum;

                for (int j = 0; j < cellCount; j++)
                {
                    HSSFCell cell = headerRow.GetCell(j);
                    dt.Columns.Add(cell.ToString());
                }

                for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++)
                {
                    HSSFRow row = sheet.GetRow(i);
                    DataRow 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);
                }

                //while (rows.MoveNext())  
                //{  
                //    HSSFRow row = (HSSFRow)rows.Current;  
                //    DataRow dr = dt.NewRow();  

                //    for (int i = 0; i < row.LastCellNum; i++)  
                //    {  
                //        HSSFCell cell = row.GetCell(i);  


                //        if (cell == null)  
                //        {  
                //            dr[i] = null;  
                //        }  
                //        else  
                //        {  
                //            dr[i] = cell.ToString();  
                //        }  
                //    }  
                //    dt.Rows.Add(dr);  
                //}  

                return dt;
            }
Esempio n. 5
0
 /// <summary>
 /// 获取单元格内容
 /// </summary>
 /// <param name="cell"></param>
 /// <returns></returns>
 private string GetCellValue(HSSFCell cell)
 {
     if (cell == null)
     {
         return("");
     }
     return(cell.ToString().Trim());//修改于11-07-07 添加了Trim()
 }
Esempio n. 6
0
        /// <summary>
        /// 读取2007以上版本.xlsx
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public static string Read2003ToString(string path, string name)
        {
            HSSFWorkbook hssfworkbook;
            var          fpath = HttpContext.Current.Server.MapPath(path + name);

            using (FileStream file = new FileStream(fpath, FileMode.Open, FileAccess.Read))
            {
                hssfworkbook = new HSSFWorkbook(file);
            }

            HSSFSheet sheet = (HSSFSheet)hssfworkbook.GetSheetAt(0);

            System.Collections.IEnumerator rows = sheet.GetRowEnumerator();

            StringBuilder sb   = new StringBuilder();
            int           irow = 0;

            sb.Append("<table>");
            while (rows.MoveNext())
            {
                HSSFRow row = (HSSFRow)rows.Current;
                irow++;
                sb.Append("<tr>");
                for (int i = 0; i < row.LastCellNum; i++)
                {
                    HSSFCell cell = (HSSFCell)row.GetCell(i);
                    string   dr   = "";
                    if (cell == null)
                    {
                        dr = "";
                    }
                    else
                    {
                        dr = cell.ToString();
                        if (dr == "$ClientName$")
                        {
                            cell.SetCellValue("这是写名称");
                        }
                        if (dr == "$Content$")
                        {
                            cell.SetCellValue("这是写联系人");
                        }
                    }
                    sb.Append("<td>" + dr + "</td>");//("+irow+","+i+")"+
                }
                sb.Append("</tr>");
            }   /*
                 * ②:将文档保存到指定路径
                 */
            var destFileName = HttpContext.Current.Server.MapPath(path + "new_" + name);
            //HSSFWorkbook hssfworkbook2 = writeToExcel();
            MemoryStream msfile = new MemoryStream();

            hssfworkbook.Write(msfile);
            System.IO.File.WriteAllBytes(destFileName, msfile.ToArray());
            sb.Append("</table>");
            return(sb.ToString());
        }
Esempio n. 7
0
    private DataTable XlsToDataTable(HSSFWorkbook hw)
    {
        int hasNull = 0;

        try
        {
            DataTable   dt    = new DataTable();
            HSSFSheet   sheet = (HSSFSheet)hw.GetSheetAt(SheetNum);
            IEnumerator rows  = sheet.GetRowEnumerator();
            for (int i = 0; i < MaxColumNum; i++)
            {
                dt.Columns.Add(GetColumnName(i + 1).Trim());
            }
            while (rows.MoveNext())
            {
                hasNull = 0;
                HSSFRow row = (HSSFRow)rows.Current;
                DataRow dr  = dt.NewRow();
                for (int i = 0; i < MaxColumNum; i++)
                {
                    HSSFCell cell = (HSSFCell)row.GetCell(i);
                    if (cell == null)
                    {
                        dr[i] = null;
                    }
                    else
                    {
                        dr[i] = cell.ToString().Trim();
                    }
                }
                foreach (object obj in dr.ItemArray)
                {
                    if (string.IsNullOrEmpty(obj.ToString().Trim()))
                    {
                        hasNull++;
                    }
                }
                if (hasNull < MaxColumNum)
                {
                    dt.Rows.Add(dr);
                }
            }
            if (dt.Rows.Count < 1)
            {
                return(null);
            }
            else
            {
                return(dt);
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
        public void InsertPageBreaks(HSSFWorkbook workbook, string shtName)
        {
            //Find instances of the word "pagebreak" and replace with a page break
            HSSFSheet sheet   = (HSSFSheet)workbook.GetSheet(shtName);
            int       cellctr = 0;
            HSSFCell  range   = (HSSFCell)sheet.GetRow(cellctr).GetCell(0);

            while (range == null || range.ToString() != "EOF")
            {
                if (range != null && range.ToString() == "pagebreak")
                {
                    sheet.SetRowBreak(cellctr);
                    range.SetCellValue(string.Empty);
                }
                cellctr++;
                range = (HSSFCell)sheet.GetRow(cellctr).GetCell(0);
            }
            range.SetCellValue(string.Empty);
            range = (HSSFCell)sheet.GetRow(0).GetCell(0);
        }
Esempio n. 9
0
        /// <summary>
        /// 添加DataTable表数据
        /// </summary>
        bool addDataToDataTable()
        {
            System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
            int index = 0;

            while (index < rowE)
            {
                rows.MoveNext();
                index++;

                if (index < rowS)
                {
                    continue;
                }

                HSSFRow row = (HSSFRow)rows.Current;
                if (row != null)
                {
                    DataRow dr = dt.NewRow();
                    for (int i = columnS; i <= columnE; i++)
                    {
                        cell = (HSSFCell)row.GetCell(i - 1);
                        if (cell == null)
                        {
                            continue;
                        }
                        if (cell.CellType == CellType.FORMULA)
                        {
                            dr[i - columnS] = (int)cell.NumericCellValue;
                        }
                        else
                        {
                            dr[i - columnS] = cell.ToString();
                        }
                    }
                    //GroupID
                    dr[columnE - columnS + 1] = tm.GUIDValue;
                    //Category
                    if (tm.IsCategoryNeeded)
                    {
                        dr[columnE - columnS + 2] = tm.CategoryValue;
                    }
                    dt.Rows.Add(dr);
                }
                else
                {
                    reportError(string.Format("解析sheet数据:{0}失败", sheet.SheetName));
                    return(false);
                }
            }
            recordResult(string.Format("解析sheet数据:{0}成功", sheet.SheetName));
            return(true);
        }
Esempio n. 10
0
    /// <summary>
    ///
    /// </summary>
    /// <param name="dtSource"></param>
    /// <param name="strFileName"></param>
    /// <remarks></remarks>
    /// <Author></Author>
    public static DataTable FromExcel(string filePath, string sheetname, int StartRow, int StartColumns, int LenColumns)
    {
        DataTable    dt           = new DataTable();
        HSSFWorkbook hssfWorkbook = new HSSFWorkbook(new FileStream(filePath, FileMode.Open));

        for (int sheetIndex = 0; sheetIndex < hssfWorkbook.NumberOfSheets; ++sheetIndex)
        {
            HSSFSheet hssfSheet = hssfWorkbook.GetSheetAt(sheetIndex) as HSSFSheet;
            if (hssfSheet.SheetName == sheetname)
            {
                HSSFRow currentRow = hssfSheet.GetRow(StartRow) as HSSFRow;
                for (int columnIndex = StartColumns; columnIndex < StartColumns + LenColumns; columnIndex++)
                {
                    HSSFCell currentCell = currentRow.GetCell(columnIndex) as HSSFCell;
                    string   title       = currentCell.ToString().Trim();
                    bool     b           = true;
                    for (int s = 0; s < dt.Columns.Count; s++)
                    {
                        if (dt.Columns[s].ColumnName == title)
                        {
                            dt.Columns.Add(title + "1");
                            b = false;
                            break;
                        }
                    }
                    if (b == true)
                    {
                        dt.Columns.Add(title);
                    }
                }

                for (int j = StartRow + 1; j <= hssfSheet.LastRowNum; j++)
                {
                    HSSFRow cRow = hssfSheet.GetRow(j) as HSSFRow;
                    if (cRow != null)
                    {
                        DataRow dw = dt.NewRow();
                        for (int columnIndex = StartColumns; columnIndex < StartColumns + LenColumns; columnIndex++)
                        {
                            HSSFCell cCell = cRow.GetCell(columnIndex) as HSSFCell;
                            if (cCell != null)
                            {
                                dw[columnIndex] = cCell.ToString().Trim();
                            }
                        }
                        dt.Rows.Add(dw);
                    }
                }
            }
        }

        return(dt);
    }
Esempio n. 11
0
        /// <summary>
        /// 定位sheet内有效坐标
        /// </summary>
        /// 利用泛型
        bool convertExcelToDataTable <T>() where T : class
        {
            dt = new DataTable();
            System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
            int index = 0;

            while (index < rowE)
            {
                rows.MoveNext();
                index++;

                if (index < rowS)
                {
                    continue;
                }

                HSSFRow row = (HSSFRow)rows.Current;
                if (row != null)
                {
                    if (index == rowS)
                    {
                        //通过反射提取表头注入datatable
                        Type           type   = typeof(T);
                        PropertyInfo[] pArray = type.GetProperties();
                        foreach (var p in pArray)
                        {
                            dt.Columns.Add(p.Name);
                        }
                        columnE = columnS + pArray.Length - 1;
                    }
                    else
                    {
                        DataRow dr = dt.NewRow();
                        for (int i = columnS; i <= columnE; i++)
                        {
                            cell = (HSSFCell)row.GetCell(i - 1);
                            if (cell == null)
                            {
                                continue;
                            }
                            dr[i - columnS] = cell.ToString();
                        }
                        dt.Rows.Add(dr);
                    }
                }
                else
                {
                    return(false);
                }
            }
            return(true);
        }
Esempio n. 12
0
        /// <summary>读取excel
        /// 默认第一行为标头
        /// </summary>
        /// <param name="path">excel文档路径</param>
        /// <returns></returns>
        public static DataTable RenderDataTableFromExcel(string path)
        {
            DataTable dt = new DataTable();

            HSSFWorkbook hssfworkbook;

            using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
            {
                hssfworkbook = new HSSFWorkbook(file);
            }
            HSSFSheet sheet = (HSSFSheet)hssfworkbook.GetSheetAt(0);

            System.Collections.IEnumerator rows = sheet.GetRowEnumerator();

            HSSFRow headerRow = (HSSFRow)sheet.GetRow(0);
            int     cellCount = headerRow.LastCellNum;

            for (int j = 0; j < cellCount; j++)
            {
                HSSFCell cell = (HSSFCell)headerRow.GetCell(j);
                if (cell == null)
                {
                    dt.Columns.Add("");
                }
                else
                {
                    dt.Columns.Add(cell.ToString());
                }
            }

            for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++)
            {
                HSSFRow row = (HSSFRow)sheet.GetRow(i);

                if (row == null)
                {
                    continue;
                }
                DataRow 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);
        }
Esempio n. 13
0
        /// <summary>
        /// 文件为xls  2003
        /// </summary>
        /// <param name="row"></param>
        /// <param name="dr"></param>
        /// <param name="i"></param>
        private static void GetCellValue(HSSFRow row, DataRow dr, int i)
        {
            HSSFCell cell = row.GetCell(i) as HSSFCell;

            if (cell != null)
            {
                switch (cell.CellType)
                {
                case CellType.Blank:
                    dr[i] = null;
                    break;

                case CellType.Boolean:
                    dr[i] = cell.BooleanCellValue;
                    break;

                case CellType.Numeric:
                    ////This is a trick to get the correct value of the cell. NumericCellValue will return a numeric value no matter the cell value is a date or a number.
                    if (DateTime.Compare(cell.DateCellValue, DateTime.Parse("1900-01-01")) > 0)
                    {
                        dr[i] = cell.DateCellValue;
                    }
                    else
                    {
                        dr[i] = cell.ToString();
                    }
                    //if (HSSFDateUtil.IsCellDateFormatted(cell))
                    //{
                    //    dr[i] = cell.DateCellValue;
                    //}
                    //if (cell.CellType == NPOI.SS.UserModel.CellType.NUMERIC)
                    //{
                    //    dr[i] = cell.NumericCellValue;
                    //}

                    break;

                case CellType.String:
                    dr[i] = cell.StringCellValue;
                    break;

                case CellType.Error:
                    dr[i] = cell.ErrorCellValue;
                    break;

                case CellType.Formula:
                default:
                    dr[i] = cell.NumericCellValue;
                    break;
                }
            }
        }
Esempio n. 14
0
        public static string GetStringCellValue(this HSSFSheet sheet, int row, string AlphaBet)
        {
            HSSFCell cell = sheet.GetRow(row).GetCell(Col(AlphaBet));

            if (cell == null)
            {
                return("");
            }
            else
            {
                return(cell.ToString().Trim());
            }
        }
Esempio n. 15
0
        /// <summary>读取excel
        /// 默认第一行为标头
        /// </summary>
        /// <param name="strFileName">excel文档路径</param>
        /// <param name="nameList">指定列命名</param>
        /// <returns></returns>
        public static DataTable Import(string strFileName, string[] nameList)
        {
            DataTable dt = new DataTable();

            HSSFWorkbook hssfworkbook;

            using (FileStream file = new FileStream(strFileName, FileMode.Open, FileAccess.Read))
            {
                hssfworkbook = new HSSFWorkbook(file);
            }
            HSSFSheet sheet = (HSSFSheet)hssfworkbook.GetSheetAt(0);

            System.Collections.IEnumerator rows = sheet.GetRowEnumerator();

            HSSFRow headerRow = (HSSFRow)sheet.GetRow(0);
            int     cellCount = headerRow.LastCellNum;

            if (nameList.Length == cellCount)//如果指定的列总数跟导入的一样,指定为列命名
            {
                for (int j = 0; j < nameList.Length; j++)
                {
                    HSSFCell cell = (HSSFCell)headerRow.GetCell(j);
                    dt.Columns.Add(nameList[j]);
                }
            }
            else
            {
                for (int j = 0; j < cellCount; j++)
                {
                    HSSFCell cell = (HSSFCell)headerRow.GetCell(j);
                    dt.Columns.Add(cell.ToString());
                }
            }

            for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++)
            {
                HSSFRow row     = (HSSFRow)sheet.GetRow(i);
                DataRow 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);
        }
Esempio n. 16
0
        /// <summary>
        /// 将xls文件流读取为datatable
        /// </summary>
        /// <param name="stream"></param>
        public static DataTable ReadXlsToDataTable(Stream stream)
        {
            DataTable dt           = new DataTable();
            IWorkbook hssfworkbook = new HSSFWorkbook(stream);
            ISheet    sheet        = hssfworkbook.GetSheetAt(0);

            System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
            HSSFRow headerRow = (HSSFRow)sheet.GetRow(0);

            //一行最后一个方格的编号 即总的列数
            for (int j = 0; j < (sheet.GetRow(0).LastCellNum); j++)
            {
                //SET EVERY COLUMN NAME
                HSSFCell cell = (HSSFCell)headerRow.GetCell(j);

                dt.Columns.Add(cell.ToString());
            }

            while (rows.MoveNext())
            {
                IRow    row = (HSSFRow)rows.Current;
                DataRow dr  = dt.NewRow();

                if (row.RowNum == 0)
                {
                    continue;                 //The firt row is title,no need import
                }
                for (int i = 0; i < row.LastCellNum; i++)
                {
                    ICell cell = row.GetCell(i);

                    if (cell == null)
                    {
                        dr[i] = null;
                    }
                    if (cell.CellType == CellType.Numeric && DateUtil.IsCellDateFormatted(cell))
                    {
                        dr[i] = cell.DateCellValue;
                    }
                    else
                    {
                        dr[i] = cell.ToString();
                    }
                }

                dt.Rows.Add(dr);
            }
            return(dt);
        }
Esempio n. 17
0
        public static DataTable ConvertToDataTable(HSSFWorkbook hssfworkbook)
        {
            HSSFSheet sheet = (HSSFSheet)hssfworkbook.GetSheetAt(0);

            System.Collections.IEnumerator rows = sheet.GetRowEnumerator();

            //预设表头
            rows.MoveNext();
            HSSFRow header = (HSSFRow)rows.Current;

            System.Data.DataTable dt = new System.Data.DataTable();
            for (int j = 0; j < header.Cells.Count; j++)
            {
                dt.Columns.Add(header.Cells[j].ToString());
            }

            while (rows.MoveNext())
            {
                HSSFRow row = (HSSFRow)rows.Current;
                DataRow dr  = dt.NewRow();

                for (int i = 0; i < row.LastCellNum; i++)
                {
                    HSSFCell cell = (HSSFCell)row.GetCell(i);
                    if (cell == null)
                    {
                        dr[i] = null;
                    }
                    else
                    {
                        if (cell.CellStyle.DataFormat == 0xe)//预设日期单元格处理
                        {
                            dr[i] = cell.DateCellValue.ToShortDateString();
                        }
                        else if (cell.CellStyle.DataFormat == 0x7)//预设金额处理
                        {
                            dr[i] = cell.NumericCellValue.ToString();
                        }
                        else
                        {
                            dr[i] = cell.ToString();
                        }
                    }
                }
                dt.Rows.Add(dr);
            }
            return(dt);
        }
Esempio n. 18
0
        public static DataTable RenderDataTableFromExcel(string path, string sheetname)
        {
            DataTable    dataTable = new DataTable();
            HSSFWorkbook hSSFWorkbook;

            using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read))
            {
                hSSFWorkbook = new HSSFWorkbook(fileStream);
            }
            HSSFSheet   hSSFSheet     = (HSSFSheet)hSSFWorkbook.GetSheet(sheetname);
            IEnumerator rowEnumerator = hSSFSheet.GetRowEnumerator();
            HSSFRow     hSSFRow       = (HSSFRow)hSSFSheet.GetRow(0);
            int         lastCellNum   = hSSFRow.LastCellNum;

            for (int i = 0; i < lastCellNum; i++)
            {
                HSSFCell hSSFCell = (HSSFCell)hSSFRow.GetCell(i);
                bool     flag     = hSSFCell == null;
                if (flag)
                {
                    dataTable.Columns.Add("");
                }
                else
                {
                    dataTable.Columns.Add(hSSFCell.ToString());
                }
            }
            for (int j = hSSFSheet.FirstRowNum + 1; j <= hSSFSheet.LastRowNum; j++)
            {
                HSSFRow hSSFRow2 = (HSSFRow)hSSFSheet.GetRow(j);
                bool    flag2    = hSSFRow2 == null;
                if (!flag2)
                {
                    DataRow dataRow = dataTable.NewRow();
                    for (int k = hSSFRow2.FirstCellNum; k < lastCellNum; k++)
                    {
                        bool flag3 = hSSFRow2.GetCell(k) != null;
                        if (flag3)
                        {
                            dataRow[k] = hSSFRow2.GetCell(k).ToString();
                        }
                    }
                    dataTable.Rows.Add(dataRow);
                }
            }
            return(dataTable);
        }
        private string notNull(HSSFCell paramHSSFCell)
        {
            string str = "";

            if (paramHSSFCell == null)
            {
                return("");
            }
            if (paramHSSFCell != null && paramHSSFCell.CellType == 0)
            {
                str = "" + paramHSSFCell.NumericCellValue;
                if (str.EndsWith(".0", StringComparison.Ordinal))
                {
                    str = "" + (long)paramHSSFCell.NumericCellValue;
                }
            }
            else if (paramHSSFCell != null && paramHSSFCell.CellType == 2)
            {
                CellValue cellValue = null;
                try
                {
                    cellValue = this.o_evaluator.evaluate(paramHSSFCell);
                }
                catch (Exception)
                {
                    Console.WriteLine("Could not evaluate: " + paramHSSFCell);
                    return(paramHSSFCell.ToString());
                }
                if (cellValue.CellType == 0)
                {
                    str = "" + cellValue.NumberValue;
                }
                else if (cellValue.CellType == 1)
                {
                    str = cellValue.StringValue;
                }
                else
                {
                    return("");
                }
            }
            else
            {
                str = paramHSSFCell.RichStringCellValue.String;
            }
            return((string.ReferenceEquals(str, null)) ? "" : str);
        }
Esempio n. 20
0
        /// <summary>
        /// 打开excel文件
        /// </summary>
        /// <param name="excelPath">excel文件路径</param>
        public void Open(string excelPath)
        {
            HSSFWorkbook hssfworkbook;

            using (FileStream file = new FileStream(excelPath, FileMode.Open, FileAccess.Read)) {
                hssfworkbook = new HSSFWorkbook(file);
            }

            for (int k = 0; k < hssfworkbook.NumberOfSheets; k++)
            {
                DataTable dt    = new DataTable();
                HSSFSheet sheet = (HSSFSheet)hssfworkbook.GetSheetAt(k);

                if (ds.Tables.IndexOf(sheet.SheetName) == -1)
                {
                    System.Collections.IEnumerator rows = sheet.GetRowEnumerator();

                    HSSFRow headerRow = (HSSFRow)sheet.GetRow(0);
                    int     cellCount = headerRow.LastCellNum;

                    for (int j = 0; j < cellCount; j++)
                    {
                        HSSFCell cell = (HSSFCell)headerRow.GetCell(j);
                        dt.Columns.Add(cell.ToString());
                    }

                    for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++)
                    {
                        HSSFRow row     = (HSSFRow)sheet.GetRow(i);
                        DataRow 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);
                    }
                    dt.TableName = sheet.SheetName;
                    ds.Tables.Add(dt);
                }
            }
        }
Esempio n. 21
0
        public void TestCellType()
        {
            HSSFWorkbook wb    = new HSSFWorkbook();
            HSSFSheet    sheet = wb.CreateSheet() as HSSFSheet;
            HSSFRow      row   = sheet.CreateRow(0) as HSSFRow;
            HSSFCell     cell  = row.CreateCell(0) as HSSFCell;

            cell.SetCellType(CellType.Blank);
            Assert.AreEqual("9999-12-31 23:59:59.999", cell.DateCellValue.ToString("yyyy-MM-dd HH:mm:ss.fff"));
            Assert.IsFalse(cell.BooleanCellValue);
            Assert.AreEqual("", cell.ToString());

            cell.SetCellType(CellType.String);
            Assert.AreEqual("", cell.ToString());
            cell.SetCellType(CellType.String);
            cell.SetCellValue(1.2);
            cell.SetCellType(CellType.Numeric);
            Assert.AreEqual("1.2", cell.ToString());
            cell.SetCellType(CellType.Boolean);
            Assert.AreEqual("TRUE", cell.ToString());
            cell.SetCellType(CellType.Boolean);
            cell.SetCellValue("" + FormulaError.VALUE.String);
            cell.SetCellType(CellType.Error);
            Assert.AreEqual("#VALUE!", cell.ToString());
            cell.SetCellType(CellType.Error);
            cell.SetCellType(CellType.Boolean);
            Assert.AreEqual("FALSE", cell.ToString());
            cell.SetCellValue(1.2);
            cell.SetCellType(CellType.Numeric);
            Assert.AreEqual("1.2", cell.ToString());
            cell.SetCellType(CellType.Boolean);
            cell.SetCellType(CellType.String);
            cell.SetCellType(CellType.Error);
            cell.SetCellType(CellType.String);
            cell.SetCellValue(1.2);
            cell.SetCellType(CellType.Numeric);
            cell.SetCellType(CellType.String);
            Assert.AreEqual("1.2", cell.ToString());

            cell.SetCellValue((string)null);
            cell.SetCellValue((IRichTextString)null);
            wb.Close();
        }
Esempio n. 22
0
        /// <summary>
        /// 读取2007以上版本.xlsx
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public static string Read2003ToString(string path)
        {
            HSSFWorkbook hssfworkbook;

            path = HttpContext.Current.Server.MapPath(path);

            using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
            {
                hssfworkbook = new HSSFWorkbook(file);
            }

            HSSFSheet sheet = (HSSFSheet)hssfworkbook.GetSheetAt(0);

            System.Collections.IEnumerator rows = sheet.GetRowEnumerator();

            StringBuilder sb   = new StringBuilder();
            int           irow = 0;

            sb.Append("<table>");
            while (rows.MoveNext())
            {
                HSSFRow row = (HSSFRow)rows.Current;
                irow++;
                sb.Append("<tr>");
                for (int i = 0; i < row.LastCellNum; i++)
                {
                    HSSFCell cell = (HSSFCell)row.GetCell(i);
                    string   dr   = "";
                    if (cell == null)
                    {
                        dr = "";
                    }
                    else
                    {
                        dr = cell.ToString();
                    }
                    sb.Append("<td>" + dr + "</td>");//("+irow+","+i+")"+
                }
                sb.Append("</tr>");
            }
            sb.Append("</table>");
            return(sb.ToString());
        }
Esempio n. 23
0
        /// <summary>
        /// 导入Excel
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public static DataTable Upload2DataTable(string path)
        {
            using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
            {
                HSSFWorkbook hssfworkbook = new HSSFWorkbook(file);
                HSSFSheet    sheet        = hssfworkbook.GetSheetAt(0) as HSSFSheet;

                IEnumerator rows = sheet.GetRowEnumerator();

                DataTable dt = new DataTable();
                //创建列名,以第一行为名
                if (rows.MoveNext())
                {
                    HSSFRow row = rows.Current as HSSFRow;
                    for (int i = 0; i < row.LastCellNum; i++)
                    {
                        HSSFCell cell = row.GetCell(i) as HSSFCell;
                        if (cell == null)
                        {
                            dt.Columns.Add("无效");
                        }
                        else
                        {
                            dt.Columns.Add(cell.ToString());
                        }
                    }
                }
                //数据从第二行开始
                while (rows.MoveNext())
                {
                    HSSFRow row = rows.Current as HSSFRow;
                    DataRow dr  = dt.NewRow();

                    for (int i = 0; i < row.LastCellNum; i++)
                    {
                        GetCellValue(row, dr, i);
                    }

                    dt.Rows.Add(dr);
                }
                return(dt);
            }
        }
Esempio n. 24
0
        public System.Data.DataTable ReadExcelToDataTable(string filePath)
        {
            //打开要读取的Excel
            FileStream file = new FileStream(filePath, FileMode.Open);
            //读入Excel
            HSSFWorkbook workbook = new HSSFWorkbook(file);

            file.Close();
            HSSFSheet sheet = workbook.GetSheetAt(0);
            //建立一个新的table
            DataTable dtNew = new DataTable();;
            HSSFRow   row   = sheet.GetRow(0);

            //读取取第0列作为column name
            for (int columnIndex = 0; columnIndex < row.LastCellNum; columnIndex++)
            {
                DataColumn dc = new DataColumn(row.GetCell(columnIndex).ToString());
                dtNew.Columns.Add(dc);
            }
            int rowId = 1;

            //第一列以后为资料,一直读到最后一行
            while (rowId <= sheet.LastRowNum)
            {
                DataRow newRow = dtNew.NewRow();
                //读取所有column
                for (int colIndex = 0; colIndex < dtNew.Columns.Count; colIndex++)
                {
                    string   str     = string.Empty;
                    HSSFCell CellVal = sheet.GetRow(rowId).GetCell(colIndex);
                    if (CellVal != null)
                    {
                        str = CellVal.ToString();
                    }
                    newRow[dtNew.Columns[colIndex]] = str;
                }
                dtNew.Rows.Add(newRow);
                rowId++;
            }
            return(dtNew);
        }
Esempio n. 25
0
        /// <summary>
        /// 将Excel转成DataTable
        /// </summary>
        /// <param name="fileupload">上传控件实例引用</param>
        /// <returns></returns>
        public static DataTable ImportExcelByNPOI(FileStream file)
        {
            DataTable dt = new DataTable();

            using (file)
            {
                HSSFWorkbook hssfworkbook           = new HSSFWorkbook(file);
                HSSFSheet    sheet                  = (HSSFSheet)hssfworkbook.GetSheetAt(0);
                System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
                bool flag = true;
                //将Excel内数据读取到DataTable 中
                while (rows.MoveNext())
                {
                    HSSFRow row = (HSSFRow)rows.Current;
                    DataRow dr  = dt.NewRow();

                    for (int i = 0; i < row.LastCellNum; i++)
                    {
                        HSSFCell cell = (HSSFCell)row.GetCell(i);
                        if (flag)
                        {
                            dt.Columns.Add(i.ToString());
                        }

                        if (cell == null)
                        {
                            dr[i] = null;
                        }
                        else
                        {
                            dr[i] = cell.ToString();
                        }
                    }
                    flag = false;
                    dt.Rows.Add(dr);
                }
            }
            return(dt);
        }
Esempio n. 26
0
        /// <summary>
        /// 读取指定位置的单元格的值string
        /// </summary>
        /// <param name="row"></param>
        /// <param name="col"></param>
        /// <param name="sheet"></param>
        /// <returns></returns>
        public static string ReadCell(int row, int col, ref HSSFSheet sheet)
        {
            if (sheet.GetRow(row - 1) == null)
            {
                return("null");
            }
            else
            {
                HSSFRow t_row = (HSSFRow)sheet.GetRow(row - 1);

                if (t_row.GetCell(col - 1) == null)
                {
                    return("null");
                }
                else
                {
                    HSSFCell t_cell = (HSSFCell)t_row.GetCell(col - 1);

                    return(t_cell.ToString());
                }
            }
        }