你好,欢迎访问我的博客!登录
当前位置:首页 - 随笔 - 正文 君子好学,自强不息!

c#操作 excel实现l数据的导入、导出实例

2018-06-21 12:59:46随笔admin63°c
A+ A-

c# excel

.Net平台上对Excel进行操作主要有两种方式。第一种,把Excel文件看成一个数据库,通过OleDb的方式进行读取与操作;第二种,调用Excel的COM组件。两种方式各有特点。

注意一些简单的问题1.excel文件只能存储65535行数据,如果你的数据大于65535行,那么就需要将excel分割存放了。2.关于乱码,这主要是字符设置问题。

/// <summary>
/// 导出到 Excel 文件
/// </summary>
/// <param name="fileName">含完整路径</param>
/// <param name="dataTable">含字段标题名</param>
public void ExpExcel(string fileName ,DataTable dataTable)
{
    Excel.ApplicationClass apc =new Excel.ApplicationClass();
    apc.Visible = false ;
    Excel.Workbook wkbook = apc.Workbooks.Add( true ) ;
    Excel.Worksheet wksheet = (Excel.Worksheet)wkbook.ActiveSheet;
    int rowIndex = 2;
    int colIndex = 1;
    wksheet.get_Range(apc.Cells[1,1],apc.Cells[dataTable.Rows.Count,dataTable.Columns.Count]).NumberFormat = "@";
    //取得列标题
    foreach (DataColumn dc in dataTable.Columns)
    {
        colIndex ++;
        wksheet.Cells[1,colIndex] = dc.ColumnName;
    }
    //取得表格中数据
    foreach (DataRow dr in dataTable.Rows)
    {
        colIndex = 1;
        foreach (DataColumn dc in dataTable.Columns)
        {
            if(dc.DataType == System.Type.GetType("System.DateTime"))
            {
                apc.Cells[rowIndex,colIndex] = "'"+(Convert.ToDateTime(dr[dc.ColumnName].ToString())).ToString("yyyy-MM-dd");
            }
            else
                if(dc.DataType == System.Type.GetType("System.String"))
            {
                apc.Cells[rowIndex,colIndex] = "'"+dr[dc.ColumnName].ToString();
            }
            else
            {
                apc.Cells[rowIndex,colIndex] = "'"+dr[dc.ColumnName].ToString();
            }
            wksheet.get_Range(apc.Cells[rowIndex,colIndex],apc.Cells[rowIndex,colIndex]).HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
            colIndex++;
        }
        rowIndex++;
    }
    
    //设置表格样式
    wksheet.get_Range(apc.Cells[1,1],apc.Cells[1,dataTable.Columns.Count]).Interior.ColorIndex = 20; 
    wksheet.get_Range(apc.Cells[1,1],apc.Cells[1,dataTable.Columns.Count]).Font.ColorIndex = 3;
    wksheet.get_Range(apc.Cells[1,1],apc.Cells[1,dataTable.Columns.Count]).Borders.Weight = Excel.XlBorderWeight.xlThin;
    wksheet.get_Range(apc.Cells[1,1],apc.Cells[dataTable.Rows.Count,dataTable.Columns.Count]).Columns.AutoFit();
    if(File.Exists(fileName))
    {
        File.Delete(fileName);
    }
    wkbook.SaveAs( fileName ,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange ,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing);
   
    wkbook.Close(Type.Missing,Type.Missing,Type.Missing);
    apc.Quit();
    wkbook = null;
    apc = null;
    GC.Collect();
}
/// <summary>
/// 从Excel导入帐户(逐单元格读取)
/// </summary>
/// <param name="fileName">完整路径名</param>
public IList ImpExcel(string fileName)
{
    IList alExcel = new ArrayList();
    UserInfo userInfo = new UserInfo();
    Excel.Application app;
    Excel.Workbooks wbs;
    Excel.Worksheet ws;
    app = new Excel.Application();
    wbs = app.Workbooks;
    wbs.Add(fileName);
    ws= (Excel.Worksheet)app.Worksheets.get_Item(1);
    int a = ws.Rows.Count;
    int b = ws.Columns.Count;
    
    for ( int i = 2; i < 4; i++)
    {
        for ( int j = 1; j < 21; j++)
        {
            Excel.Range range = ws.get_Range(app.Cells[i,j],app.Cells[i,j]);
            range.Select();
            alExcel.Add( app.ActiveCell.Text.ToString() );
        }
    }
    return alExcel;
}
/// <summary>
/// 从Excel导入帐户(新建oleDb连接,Excel整表读取,适于无合并单元格时)
/// </summary>
/// <param name="fileName">完整路径名</param>
/// <returns></returns>
public DataTable ImpExcelDt (string fileName)
{
    string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + fileName + ";Extended Properties=Excel 8.0" ;
    OleDbConnection myConn = new OleDbConnection ( strCon ) ;
    string strCom = " SELECT * FROM [Sheet1$] " ;
    myConn.Open ( ) ;
    OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;
    DataSet myDataSet = new DataSet ( ) ;
    myCommand.Fill ( myDataSet , "[Sheet1$]" ) ;
    myConn.Close ( ) ;
    DataTable dtUsers = myDataSet.Tables[0];
    return dtUsers;
}
dataGrid中显示:
DataGrid1.DataMember= "[Sheet1$]" ;
DataGrid1.DataSource = myDataSet ;


  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
c#操作 excel实现l数据的导入、导出实例

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签:

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>


  用户登录