日期:2014-05-18  浏览次数:20876 次

c#如何读写excel文件呢?
如题。

------解决方案--------------------
和读数据库是一样的!
只是连接字符串不一样!
------解决方案--------------------
给你一个返回DataSet的操作Execl
public DataSet ExcelToDS(string Path,string filename)
{
string files = filename.Substring(0, filename.Length - 4);
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= ' " + Path + " ';Extended Properties= 'Excel 5.0;HDR=Yes;IMEX=1 '; ";
OleDbConnection comn = new OleDbConnection(strConn);
OleDbDataAdapter myCommand = new OleDbDataAdapter( "select * from [ ' " + files + "$ '] ", comn);
DataSet ds = new DataSet();
myCommand.Fill(ds);
return ds;
}
------解决方案--------------------
对于简单Excel文件,要读的话,可以用数据集直接就读进来了,这样速度也比较快,也就是4楼的做法。
对伊格式稍微复杂点的Excel(比如有单元格的合并),不能通过读取数据集的方法,只能调用Excel的com接口
一个例子:
/// <summary>
/// 将指定DataTable中的数据导出到Excel
/// </summary>
/// <param name= "filePath "> 文件要保存的完整路径 </param>
/// <param name= "dt "> 输入数据表 </param>
/// <returns> 是否成功 </returns>
public static bool PutDataToExcel(string filePath,System.Data.DataTable dt)
{
Excel.Application excel = new Excel.Application () ;
excel.Application.Workbooks.Add ( true ) ;

int i ,j ;
for (i=0;i <dt.Columns.Count ;i++)
{
excel.Cells[ 1 , i+1 ]=dt.Columns[i].ColumnName;
}

for (i=0;i <dt.Rows.Count ;i++)
{
for(j=0;j <dt.Columns.Count;j++)
{
excel.Cells[ i+2 , j+1 ]=dt.Rows[i][j] is DBNull? "- ":dt.Rows[i][j].ToString();
}
}

//excel.Visible = true ;
excel.Workbooks[1].SaveCopyAs(filePath);
KillExcell();
return false;
}


还有一种方法,要是程序主要是进行office操作,可以建立VSTO项目。

------解决方案--------------------
添加引用里加入电子表格的COM组件就行了...加入后再按楼上的去做就行了

*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html