读取Excel中数据

 #region 读取导入Excel数据

    /// <summary>
    ///
    /// </summary>
    /// <param name="filename"></param>
    /// <param name="fields"></param>
    /// <returns></returns>
    public DataSet ReadDataFromExcel(string filename, string fields)
    {
        DataSet ds = new DataSet();

        try
        {
            string cnn = string.Empty;

            string ext = Path.GetExtension(filename).ToLower();

            if (ext == ".xls")
            {
                cnn = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + filename + ";Extended Properties=" + (char)34 + "Excel 8.0;HDR=Yes;IMEX=1;" + (char)34;
            }
            else if (ext == ".xlsx")
            {
                cnn = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + filename + ";Extended Properties=" + (char)34 + "Excel 12.0;HDR=Yes;IMEX=1;" + (char)34;
            }
            else
            {
                throw new Exception("读取失败,非excel文件格式。");
            }

            using (OleDbConnection connection = new OleDbConnection(cnn))
            {
                connection.Open();

                DataTable tables = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });

                foreach (DataRow row in tables.Rows)
                {
                    string table = row["TABLE_NAME"].ToString();
                    DataTable dt = ReadEachExcelSheetData(connection, table, fields);
                    if (dt != null)
                    {
                        ds.Tables.Add(dt.Copy());
                    }
                }

            }

            return ds;
        }
        catch (Exception ex)
        {
            throw new Exception("数据文件或者内容格式有严重错误(" + ex.Message + "),请检查!");
        }
    }

    public DataTable ReadEachExcelSheetData(OleDbConnection connection, string table, string fields)
    {
        try
        {
            string sql = string.Empty;

            string query = string.Empty;

            if (fields.IndexOf(‘,‘) > 0)
            {
                foreach (string column in fields.Split(‘,‘))
                {
                    query += "[" + column + "],";
                }
                query = query.Trim(‘,‘);
            }
            else
            {
                query = fields;
            }

            sql = @"
                        SELECT
                                {0}
                        FROM
                                [{1}]
                        ";

            sql = string.Format(sql, query, table);

            DataSet ds = new DataSet();
            OleDbDataAdapter adapter = new OleDbDataAdapter(sql, connection);
            adapter.Fill(ds, table);

            if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
            {
                return ds.Tables[0];
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }

        return null;

    }

    private DataSet GetDataFromExcel(string filename,string fields)
    {
        DataSet ds = new DataSet();

        string cnn = string.Empty;

        string ext = Path.GetExtension(filename).ToLower();

        if (ext == ".xls")
        {
            cnn = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + filename + ";Extended Properties=" + (char)34 + "Excel 8.0;HDR=Yes;IMEX=1;" + (char)34;
        }
        else if (ext == ".xlsx")
        {
            cnn = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + filename + ";Extended Properties=" + (char)34 + "Excel 12.0;HDR=Yes;IMEX=1;" + (char)34;
        }
        else
        {
            throw new Exception("读取失败,非excel文件格式。");
        }

        using (OleDbConnection connection = new OleDbConnection(cnn))
        {
            connection.Open();

            DataTable tables = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });

            string tableName = tables.Rows[0]["TABLE_NAME"].ToString();

            string sql = "select * from [{0}]";

            sql = string.Format(sql, tableName);

            OleDbCommand command = connection.CreateCommand();
            command.CommandText = sql;

            OleDbDataAdapter adapter = new OleDbDataAdapter(command);
            adapter.Fill(ds);

            return ds;

        }
    }

    #endregion
时间: 2024-11-02 23:44:42

读取Excel中数据的相关文章

读取Excel中的数据到DataSet

读取Excel中的数据到DataSet 1.引用命名空间 using System.Data.OleDb; 2.输入Excel文件,输出DataSet public DataSet ExecleDs()    {        string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\data-for-source-apportionment\\PM-SO2-NOx-CO-O3-201311-20140324.xlsx

C# 读取Excel中的数据

#region 读取Excel中的数据 /// <summary> /// 读取Excel中的数据 /// </summary> /// <param name="excelFile">Excel文件名及路径,EG:C:\Users\JK\Desktop\导入测试.xls</param> /// <returns>Excel中的数据</returns> private DataTable GetTable(stri

接口测试中读取excel中的请求数据含有中文问题,UnicodeEncodeError: &#39;latin-1&#39; codec can&#39;t encode character &#39;\u5c0f&#39; in position

错误信息:UnicodeEncodeError: 'latin-1' codec can't encode character '\u5c0f' in position 31: Body ('小') is not valid Latin-1. Use body.encode('utf-8') if you want to send it encoded in UTF-8的错误 原因:从excel中读取你的接口请求数据时带有中文时在发送求情时会出现上述错误.只需要将请求数据转化为bytes类型即可

VC6.0读取Excel文件数据

啰嗦一下:本人所在公司从事碟式斯特林太阳能发电设备的研发与销售.单台设备图如下: 工作原理如下:整个设备大致可分为五个部分, 1.服务器,负责气象.发电等数据存取,电.网连接等处理: 2.气象站,通过光感应器实时获取气象数据,传送至服务器 3.碟型镜面,反射阳光热量,均匀聚焦到350mm直径的圆形范围内--发动机热头大小: 4.斯特林发动机,吸收镜面反射热量,通过内部气体膨胀.收缩带动发动机发电: 5.通信线,连接系统各个部分,使其运行正常. 对于这样一台设备,要使其高效发电,出气象条件要好之外

使用OPEN XML SDK 读取EXCEL中的超链接Hyperlink

使用OPEN XML SDK 读取EXCEL中的超链接Hyperlink 原理 先创建一个包含所有EXCEL单元格中超链接Hyperlink数据的表,再定位单元格通过列头(如A1,B1)获取超链接信息.本文仅重着于如何读取EXCEL中的超链接Hyperlink信息,不设计OPEN XML SDK讲解,如果需要请参考: 使用Open XML SDK读取Excel 代码 using (SpreadsheetDocument myDoc = SpreadsheetDocument.Open(strea

robotframework 读取excel中的数据转换:

robotframework 读取excel中的数据转换 Convert To Integer choose file 上传文件关键字

Python读取excel中的图片

Python读取excel中的图片文件,并转成base64 import sys import os import xlrd import zipfile import base64 class ExcelImgRead(object): def change_file_name(self, file_path, old_name, new_type = '.zip'): """ 修改指定目录下的文件类型名 :param file_path: :param old: :par

HBase-scan API 通过scan读取表中数据

直接贴代码啦 /** * * @param zkIp * @param zkPort * @param tablename * @param startRow 传null扫全表 * @param stopRow 已~结尾 * @throws Exception */ public static void scanTable(String zkIp,String zkPort,String tablename,String startRow,String stopRow) throws Excep

分批读取文件中数据的程序流程及其C代码实现

一.概述 在实际的软件开发项目中,经常需要处理大量的文件.某些文件中包含了相当多的数据记录数,如作者本人参与过的项目中,一个文件中有好几十万条记录.如果一次性将多条记录读入,则会花费大量的处理时间,且占用大量的内存. 为此,要求对于包含大量数据记录的文件进行分批读取操作,即每一轮读取一定数目的数据记录,待将这些记录处理完成之后,再读取下一批数据.本文介绍分批读取文件中数据的程序流程,并给出了C程序实现. 二.总体程序流程 实现分批读取文件中数据的程序流程如图1所示. 图1 实现分批读取文件中数据