/**/
/// <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 ;
首先需要添加一个引用:
文件开头增加:
using Microsoft.Office.Interop.Excel;
private void readBt_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Excel.Application app;
Workbooks wbs;
Worksheet ws;
app = new Microsoft.Office.Interop.Excel.Application();
wbs = app.Workbooks;
wbs.Add(@"d:/DataTableToExcel.xls");
ws = (Worksheet)app.Worksheets.get_Item(2);
int a = ws.Rows.Count;
int b = ws.Columns.Count;
MessageBox.Show(a.ToString() + "|" + b.ToString());
//for (int i = 1; i < 3; i++)
{
for (int j = 1; j <= 15; j++)
{
Range range = ws.get_Range(app.Cells[j, 1], app.Cells[j, 1]);
range.Select();
MessageBox.Show(app.ActiveCell.Text.ToString());
if (app.ActiveCell.Text.Equals("")) break;
range = ws.get_Range(app.Cells[j, 2], app.Cells[j, 2]);
range.Select();
MessageBox.Show(app.ActiveCell.Text.ToString());
}
}
}
private void writeBt_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Excel.ApplicationClass apc = new ApplicationClass();
apc.Visible = false;
Workbook wkbook = apc.Workbooks.Add(true);
Worksheet wksheet = (Worksheet)wkbook.ActiveSheet;
int rowIndex = 2;
int colIndex = 1;
wksheet.get_Range(apc.Cells[1, 1], apc.Cells[5, 3]).NumberFormat = "@";
//取得列标题
for(int i=1;i<=3;i++)
{
wksheet.Cells[1, i] = "C" + i.ToString();
}
//写入行
for (int i = 1; i <= 5; i++)
{
apc.Cells[i, 1] = "L" + i.ToString();
apc.Cells[i, 2] = "L" + i.ToString();
apc.Cells[i, 3] = "L" + i.ToString();
wksheet.get_Range(apc.Cells[i, 1], apc.Cells[i, 3]).HorizontalAlignment = XlHAlign.xlHAlignLeft;
wksheet.get_Range(apc.Cells[i, 2], apc.Cells[i, 3]).HorizontalAlignment = XlHAlign.xlHAlignLeft;
wksheet.get_Range(apc.Cells[i, 3], apc.Cells[i, 3]).HorizontalAlignment = XlHAlign.xlHAlignLeft;
}
//设置表格样式
wksheet.get_Range(apc.Cells[1, 1], apc.Cells[1, 3]).Interior.ColorIndex = 20;
wksheet.get_Range(apc.Cells[1, 1], apc.Cells[1, 3]).Font.ColorIndex = 3;
wksheet.get_Range(apc.Cells[1, 1], apc.Cells[1, 3]).Borders.Weight = XlBorderWeight.xlThin;
wksheet.get_Range(apc.Cells[1, 1], apc.Cells[5, 3]).Columns.AutoFit();
if (File.Exists(@"d:/test.xls"))
{
File.Delete(@"d:/test.xls");
}
wkbook.SaveAs(@"d:/test.xls", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 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;
}