C# 如何读取 html格式的excel表格 绑定到 datatable中?求助大神!

C# 如何读取 html格式的excel表格 绑定到 datatable中?求助大神!,第1张

读取Excel首先你在引用中得引用Microsoft office Excel 20** 对应的dll文件,才能读取到Excel的数据

在类里面引用:System.Data.OleDb

static public DataSet ExcelToDataSet(string filename)

{

DataSet ds

string strCon = "Provider=Microsoft.Jet.OLEDB.4.0" +

"Extended Properties=Excel 8.0" +

"data source=" + filename

OleDbConnection myConn = new OleDbConnection(strCon)

string strCom = " SELECT * FROM [Sheet1$]"

myConn.Open()

OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn)

ds = new DataSet()

myCommand.Fill(ds)

myConn.Close()

return ds

}

这个方法返回一个数据读取的数据原给你的datagridview

没有办法一次性把数据绑定上去。除非你用<asp:Table />控件。

比较快速的方法是,循环后台的table的每一行row的每一个column,然后把值对应的填充到前台的table中(前台table中,需要对应包含服务器控件。)

有这样的任务,通过ADO.NET从数据库读取数据到DataSet,数据绑定到DataGrid或者.NET2.0里的新控件DataGridView,最后将数据写入Excel文件,提供给用户进一步的分析,如打印、图表等。

有这样的任务,通过ADO.NET从数据库读取数据到DataSet,数据绑定到DataGrid或者.NET2.0里的新控件DataGridView,最后将数据写入Excel文件,提供给用户进一步的分析,如打印、图表等。

前面的步骤都很简单,关键是写Excel,毕竟Excel不是数据格式,在C#中调用Excel表格要使用到Excel的COM组件。如果你装的Office2000 ,在"C:\Program Files\Microsoft Office\Office"可以找到这个COM组件"EXCEL9.OLB",这些COM组件都是非受管代码的,要在C#中使用这些非受管代码的COM组件,就必须把他们转换成受管代码的类库。所以在用C#调用Excel表格之前,必须完成从COM组件的非受管代码到受管代码的类库的转换。在DOS命令行下键入:

tlbimp excel9.olb

这样在excel9.olb目录下就产生了三个DLL文件:"Excel.dll"、"Office.dll"、"VBIDE.dll"。

但Office2000以后的版本没有*.olb文件,对2003可以直接到OFFICE安装目录,利用.net 中带的工具在命令提示符下执行:

tlbimp excel.exe

还是会生成Excel.dll,在工程中引用这个文件就可以了。

这样与Excel有关的类都加了进来,别忘了在namespace里添加using Excel。

窗体上添加一个按钮,对Click事件方法如下:

private void button1_Click(object sender, EventArgs e)

{

int count = this.archiverdbDataSet.channel.Rows.Count//获取数据表中DataRow行总数

int column = this.archiverdbDataSet.channel.Columns.Count//获取数据表中列总数

Excel.ApplicationClass excelapp = new ApplicationClass()

//Make Excel Application Visible

excelapp.Visible = true

//写入特定文件

//Excel.Workbook wb = excelapp.Workbooks.Open(string filename,

//Type.Missing,Type.Missing,Type.Missing,Type.Missing,

//Type.Missing,Type.Missing,Type.Missing,Type.Missing,

//Type.Missing,Type.Missing,Type.Missing,Type.Missing,

//Type.Missing,Type.Missing)

Excel.Workbook wb = excelapp.Application.Workbooks.Add(true)

for (int x = 1x <= countx++)

{

for (int y = 1y <= columny++)

{

excelapp.Cells[x, y] = this.archiverdbDataSet.channel.Rows[x- 1].ItemArray[y - 1]

}

}

string tname = "C:\Book2.xls"

wb.SaveAs(tname, Missing.Value, Missing.Value, Missing.Value, Missing.Value,Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value,Missing.Value, Missing.Value, Missing.Value)

try

{

wb.Saved = true

excelapp.UserControl = false

//excelapp.Quit()

}

catch(System.Exception op)

{

MessageBox.Show("wrong" + op.Message)

}

}

以上在VS.net 2005里测试通过。当然你还可以把Excel做的漂亮点,参考文档有例子,不过没试过。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6130204.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-15
下一篇 2023-03-15

发表评论

登录后才能评论

评论列表(0条)

保存