C# 对excel的读和写操作

发布时间:2009年11月13日      浏览次数:832 次
excel操作主要就是读和写
先说下读取,分两种方式,一种是遍历读取:
using NExcel;
//传入文件流
Workbook wb = Workbook.getWorkbook(fileStream);
//创建工作组
Sheet sheet = wb.Sheets[0];
//获取工作组的个数
int rowsCount = sheet.Rows;
//遍历工作组
for (int row = 2; row < rowsCount; row++)
{
string sheet.getCell(0, row).Contents;
decimal TotalPrice = Convert.ToDecimal(sheet.getCell(1, row).Value);
}
现在遍历的方式用的很少了,主要都用OLEDB方式,把excel当作是数据源,类似于数据库操作:
private DataSet importExcelToDataSet(string FilePath)
{
string strConn;
//OLEDB初始化
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + FilePath + ";Extended Properties=Excel 8.0;";
//建立OLEDB链接
OleDbConnection conn = new OleDbConnection(strConn);
//读取对应工作组的数据链接
OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [Sheet1$]",strConn);
//数据付给结果集
DataSet myDataSet = new DataSet();
try
{
myCommand.Fill(myDataSet);
}
catch(Exception ex)
{
throw new InvalidFormatException(ex.Message);
}
return myDataSet;
}
===================================================
这里直接从数据库导出的例子:
public Excel_export(string sql,string title)
{
Excel.Application excel;
Excel._Workbook xBk;
Excel._Worksheet xSt;
Excel._QueryTable xQt;
//创建数据库连接
string Conn = "ODBC;DRIVER=SQL Server;SERVER=[服务器地址或者名称];UID=[用户名];PWD=[密码];APP=[应用程序名称(一般为操作系统名)];WSID=[工作站名称(客户端)];DATABASE=[数据库名称]";
//Application对象实例化
excel = new Excel.ApplicationClass();
//创建新的excel
xBk = excel.Workbooks.Add(true);
xSt = (Excel._Worksheet)xBk.ActiveSheet;
//设置excel格式(示例)
excel.Cells[2,2] = title;
xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Bold = true;
xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Name = "黑体";
xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Size = 22;
//导出excel数据
xQt = xSt.QueryTables.Add(Conn,xSt.get_Range(excel.Cells[4,2],excel.Cells[4,2]),sql);
//导出excel名称及其它配置
xQt.Name = "demo";
xQt.FieldNames = true;
xQt.RowNumbers = false;
xQt.FillAdjacentFormulas = false;
xQt.PreserveFormatting = false;
xQt.BackgroundQuery = true;
xQt.RefreshStyle = Excel.XlCellInsertionMode.xlInsertDeleteCells;
xQt.AdjustColumnWidth = true;
xQt.RefreshPeriod = 0;
xQt.PreserveColumnInfo = true;
xQt.Refresh(xQt.BackgroundQuery);
excel.Visible = true;
}
免责声明:本站相关技术文章信息部分来自网络,目的主要是传播更多信息,如果您认为本站的某些信息侵犯了您的版权,请与我们联系,我们会即时妥善的处理,谢谢合作!