• ASP.NET读写Excel文件


      在项目中经常需要用到读写Excel表格的功能,本文讲讲在ASP.NET中将数据导入到Excel表格中的基本方法。

    1.读取Excel文件的数据连接字符串。读取.xls格式文件的Excel文件,可设置连接字符串为:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\MyExcel.xls;Extended Properties=Excel 8.0;。如果要读取.xlsx和.xls格式文件的Excel文件,则需要将连接字符设置为:"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\MyExcel.xls;Extended Properties=Excel 12.0。

    2.读取Excel表格Sheet的名称。

    public static string[] GetExcelSheetNames(string filePath)
    {
    string conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=\"Excel 12.0;HDR=YES\"";
    OleDbConnection con
    = new OleDbConnection(conString);
    con.Open();
    DataTable dt
    = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
    con.Close();
    if (dt == null)
    {
    return null;
    }
    string[] excelSheetNames = new string[dt.Rows.Count];
    int i = 0;
    foreach (DataRow dr in dt.Rows)
    {
    excelSheetNames[i
    ++] = dr["TABLE_NAME"].ToString();
    }
    return excelSheetNames;
    }

    3.读取Excel文件。

    public static DataTable ReadExcel(string filePath, string conStr)
    {
    string conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=\"Excel 12.0;HDR=YES\"";
    OleDbConnection con
    = new OleDbConnection(conString);
    OleDbDataAdapter oda
    = new OleDbDataAdapter(conStr, con);
    DataTable dt
    = new DataTable();
    con.Open();
    oda.Fill(dt);
    con.Close();
    return dt;
    }

    4.将数据写入Excel文件。

    public static void WriteExcel(string filePath, DataTable dt)
    {
    if (File.Exists(filePath))
    {
    File.Delete(filePath);
    }
    else
    {
    string conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=\"Excel 12.0;HDR=YES\"";
    OleDbConnection con
    = new OleDbConnection(conString);
    string createSql = "create table Sheet1 (";
    foreach (DataColumn dc in dt.Columns)
    {
    createSql
    += dc.ColumnName + " varchar,";
    }
    createSql
    = createSql.Substring(0, createSql.Length - 1) + ")";

    OleDbCommand cmd
    = new OleDbCommand(createSql, con);
    con.Open();
    cmd.ExecuteNonQuery();
    foreach (DataRow dr in dt.Rows)
    {
    string insertSql = "insert into Sheet1 values(";
    foreach (DataColumn dc in dt.Columns)
    {
    insertSql
    += "'" + dr[dc].ToString() + "',";
    }
    insertSql
    = insertSql.Substring(0, insertSql.Length - 1) + ")";
    cmd
    = new OleDbCommand(insertSql, con);
    cmd.ExecuteNonQuery();
    }

    con.Close();
    }
    }
  • 相关阅读:
    PL/SQL 中查询CLOB字段内容
    ubuntu14.04 swap not avalible交换分区不能使用
    ubuntu14.04安装ia32-lib
    rtems资料分享
    NIR相机
    rsync详解
    SublimeText3使用技巧总结
    msm8610 lcd driver code analysis
    Qualcomm Android display架构分析
    LCD framebuffer驱动设计文档
  • 原文地址:https://www.cnblogs.com/hnsdwhl/p/1980300.html
Copyright © 2020-2023  润新知