zoukankan      html  css  js  c++  java
  • 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();
    }
    }
  • 相关阅读:
    生成新的密钥
    django 静态文件
    django 外键操作
    (fields.E130) DecimalFields must define a 'decimal_places' attribute.
    Django模型的Field Types总结
    Django 数据模型的字段列表整理
    需要学习的东西
    最全面的 MySQL 索引详解
    mysql 递归查询
    项目里面常用方法
  • 原文地址:https://www.cnblogs.com/hnsdwhl/p/1980300.html
Copyright © 2011-2022 走看看