程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

C# 與EXCEL

編輯:.NET實例教程
/**//// <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();
        &nbsp;   }
            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&nbsp;) ;
    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 ; 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved