
/**//// <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 ;