c#语言我已经把HTML 想要的字段提出来了,但是vs怎么写c语言到 Excel表格里

c#语言编写数据导入到excel中,问题如下,求大神解救_百度知道
c#语言编写数据导入到excel中,问题如下,求大神解救
&nbsp:///zhidao/wh%3D600%2C800/sign=58eedacd8644ebf86d246c39e9c9fb12/abb051cbadab44bede049; & & &/zhidao/pic/item/abb051cbadab44bede049; {&& & &nbsp,string rangname)&//获取服务器上文件夹的相对地址(找到图片)& v_pictures.Current.Pictures)p_ & & rng = p_worksheet!方法是这样写的.S &nbsp.hiphotos.Pictures(T & && &nbsp://d; &v_ &nbsp.Missing); &nbsp://d:& &nbsp.Height = 30; v_pictures.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="http.get_Range( &范围是“L3”多一条记录自动增一& &nbsp.jpg" esrc=" &) +&nbsp.R &nbsp,最后一条记录图片显示正常;~\\Upload\\&quot.Worksheet p_worksheet. &SetPictureToRange(E & }<a href=" & &nbsp. &&&nbsp,结果它显示在“A1”到“K2”中.baidu.Missing), E & &v_ & && Excel, string picturename .Locked = & & & Excel, Type.Insert(HttpC & & &nbsp.Width = 50,要求显示在“L3”中; & & & & & & rng, rangname); &nbsp,但是如果是两条甚至更多条记录.Workbook p_workbook.Activate(); &private void &nbsp,求大神解救.Select(rng); & &nbsp,但是上方的图片并不在指定的位置显示导出如果是一条记录.Pictures v_pictures = (E &nbsp.MapPath (&quot,图片能在指定的位置显示.com/zhidao/wh%3D450%2C600/sign=ae1d0418ad/abb051cbadab44bede049; & &nbsp
& &nbsp?shareid=&uk=" name="npoi及引用类; &nbsp,可以先把数据赋予于一张自定义Datatable表里面;& & & & & }<file fsid="" link="/share/ &nbsp.CreateNew); & & && & &nbsp,string filename)& GC; & & &nbsp, FileM&nbsp.Write(&nbsp, & &//存放路径&nbsp, filename);& & & & & &nbsp.Close(); & byte[] data = & & & NPOIHelper myhelper = new NPOIHelper(); & & &nbsp。调用代码;&&nbsp,再用NPOI第三方控件导出来更方便; & &nbsp.Collect(); & & &nbsp,而且也不存在引用office时引起的安全签名问题;& & & &nbsp.DataTable2Excel( & & & & & & & && && & & &nbsp:& & & & && & & string path = & &nbsp.Length); &nbsp, 0;public void OutToExcel(DataT {& & FileStream fs = new FileStream( & &nbsp上个月正好做导出数据这块
其他类似问题
为您推荐:
excel的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C#把查询出来的数据导出到Excel代码怎么写-.NET技术/ASP.NET-asp.net-电脑编程网C#把查询出来的数据导出到Excel代码怎么写-.NET技术/ASP.NET作者:wenxiao520 和相关&&在这里要请大家帮个忙,最近在做一个项目,需要把查询出来的数据导出到Excel中,但是在网上找了许多资料都不行,还是不能实现,特此发出此请求,请大家帮忙看下,谢谢!!------回答---------------其他回答(10分)---------这是我做项目时候的代码, 你自己看看。 希望有所帮助。
/*----------------------从中读出表中的数据---------------*/
dt = ql.GetDataSet(cmdStr, dtname).Tables[dtname];
totalCount = dt.Rows.C
StringBuilder createStr = new StringBuilder(&CREATE TABLE Sheet1(&);
for (int i = 0 ; i &
field.L i++)
if (i == field.Length - 1 || field.Length == 1)
createStr.Append(&& + fieldValues[i].ToString() + & varchar(100))&);
createStr.Append(&& + fieldValues[i].ToString() + & varchar(100),&);
mandText = @createStr.ToString(); ;
objCmd.ExecuteNonQuery();
StringBuilder insertStr = new StringBuilder(&INSERT INTO Sheet1(&);
for (int i = 0; i &
field.L i++)
if (i == field.Length - 1)
insertStr.Append(&& + fieldValues[i].ToString() + &&);
insertStr.Append(&& + fieldValues[i].ToString() + &,&);
insertStr.Append(&) VALUES(&);
for (int i = 0; i & field.L i++)
if (i == field.Length - 1)
insertStr.Append(&@& + field[i].ToString() + &)&);
insertStr.Append(&@& + field[i].ToString() + &,&);
OleDbParameter[] parm = new OleDbParameter[field.Length];
mandText = insertStr.ToString();
for (int i = 0; i & field.L i++)
parm[i] = new OleDbParameter(&@& + field[i].ToString(), OleDbType.VarChar, 100);
objCmd.Parameters.Add(parm[i]);
//遍历DataTable将数据插入新建的Excel文件中
for (int i = 0; i & dt.Rows.C i++)
for (int j = 0; j & parm.L j++)
if (null != dt.Rows[i][j])
parm[j].Value = dt.Rows[i][j];
objCmd.ExecuteNonQuery();
------其他回答(10分)---------我是把查询出来的数据绑定到GRIDVIEW,然后导出EXCELOutExecleDataBind();//绑定GRIDVIEWOutExecl.OutPutExcel(GridView1);//导出//导出Execl &
public class OutExecl &
public static void OutPutExcel(GridView GridView1) &
HttpContext.Current.Response.Clear(); &
HttpContext.Current.Response.Buffer = &
HttpContext.Current.Response.Charset = &GB2312&; &
HttpContext.Current.Response.AppendHeader(&Content-Disposition&, &filename=& + DateTime.Now.ToString(&yyyy-mm-dd&) + &.xls&); &
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding(&UTF-8&); &
HttpContext.Current.Response.ContentType = &application/ms-&; &
CultureInfo cultureInfo = new CultureInfo(&ZH-CN&, true); &
StringWriter stringWriter = new StringWriter(cultureInfo); &
HtmlTextWriter htmlTextWriter = new HtmlTextWriter(stringWriter); &
//将GridView控件的内容输出到htmlTextWriter对象中 &
GridView1.RenderControl(htmlTextWriter); &
HttpContext.Current.Response.Write(stringWriter.ToString()); &
//GridView1.Dispose();
HttpContext.Current.Response.End(); &
}相关资料:|||||||C#把查询出来的数据导出到Excel代码怎么写-.NET技术/ASP.NET来源网络,如有侵权请告知,即处理!编程Tags:                &                    C#导出Excel速度奇慢,大概要5分钟时间,这个怎么解决
回复讨论(解决方案)
没遇到过,能否贴部分主要代码上来?
我先写一个测试一下,待会儿贴源码
测试导出速度超快滴:
&&&&&&&&private&void&toolStripLabel4_Click(object&sender,&EventArgs&e)
&&&&&&&&&&&&SaveFileDialog&saveFileDialog&=&new&SaveFileDialog();
&&&&&&&&&&&&saveFileDialog.Filter&=&&Execl文件(*.xls)|*.xls&;
&&&&&&&&&&&&saveFileDialog.FilterIndex&=&0;
&&&&&&&&&&&&saveFileDialog.RestoreDirectory&=&
&&&&&&&&&&&&saveFileDialog.CreatePrompt&=&
&&&&&&&&&&&&saveFileDialog.Title&=&&数据视图导出EXCEL文件&;&
&&&&&&&&&&&&saveFileDialog.ShowDialog();
&&&&&&&&&&&&Stream&myS
&&&&&&&&&&&&myStream&=&saveFileDialog.OpenFile();
&&&&&&&&&&&&StreamWriter&sw&=&new&StreamWriter(myStream,&System.Text.Encoding.GetEncoding(&utf-8&));
&&&&&&&&&&&&string&str&=&&&;
&&&&&&&&&&&&DateTime&start&=&DateTime.N
&&&&&&&&&&&&try
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&//写标题
&&&&&&&&&&&&&&&&for&(int&i&=&0;&i&&&dataGridView1.ColumnC&i++)
&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&if&(i&&&0)
&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&str&+=&&\t&;
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&str&+=&dataGridView1.Columns[i].HeaderT
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&sw.WriteLine(str);
&&&&&&&&&&&&&&&&//写内容
&&&&&&&&&&&&&&&&&for&(int&j&=&0;&j&&&dataGridView1.Rows.C&j++)
&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&string&tempStr&=&&&;
&&&&&&&&&&&&&&&&&&&&&for&(int&k&=&0;&k&&&dataGridView1.Columns.C&k++)
&&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&&if&(k&&&0)
&&&&&&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&tempStr&+=&&\t&;
&&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&&&&&&if&(dataGridView1.Rows[j].Cells[k].Value&==&null)
&&&&&&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&tempStr&+=&string.E
&&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&&&&&&else
&&&&&&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&tempStr&+=&dataGridView1.Rows[j].Cells[k].Value.ToString();
&&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&&sw.WriteLine(tempStr);&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&sw.Close();
&&&&&&&&&&&&&&&&&myStream.Close();
&&&&&&&&&&&&}
&&&&&&&&&&&&catch(Exception&ex)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&MessageBox.Show(ex.Message);
&&&&&&&&&&&&}
&&&&&&&&&&&&finally
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&sw.Close();
&&&&&&&&&&&&&&&&myStream.Close();
&&&&&&&&&&&&}
&&&&&&&&&&&&MessageBox.Show(&将此工作表导出为excel共耗时:&&+&DateTime.Now.Subtract(start).TotalMilliseconds.ToString()&+&&毫秒&);
楼上真不错。
string&yufuk&=&&&;
&&&&&&&&&&&&SaveFileDialog&dg&=&new&SaveFileDialog();//保存文件对话框,选择导出文件的存放位置
&&&&&&&&&&&&dg.Filter&=&&xls&files(*.xls)|*.xls&;//保存为xls格式
&&&&&&&&&&&&if&(dg.ShowDialog()&==&DialogResult.OK)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&string&filepath&=&dg.FileName.ToString();//保存文件的路径
&&&&&&&&&&&&&&&&Microsoft.Office.Interop.Excel.Workbooks&objB//接口&workbooks
&&&&&&&&&&&&&&&&Microsoft.Office.Interop.Excel.Sheets&objS//&接口&sheets
&&&&&&&&&&&&&&&&Microsoft.Office.Interop.Excel._Worksheet&objS//接口&worksheet
&&&&&&&&&&&&&&&&//Microsoft.Office.Interop.Excel.Range&range&=&
&&&&&&&&&&&&&&&&excel&=&new&Microsoft.Office.Interop.Excel.Application();
&&&&&&&&&&&&&&&&objBooks&=&excel.W
&&&&&&&&&&&&&&&&Object&miss&=&System.Reflection.Missing.V
&&&&&&&&&&&&&&&&objBook&=&objBooks.Add(miss);
&&&&&&&&&&&&&&&&objSheets&=&objBook.S
&&&&&&&&&&&&&&&&objSheet&=&(Microsoft.Office.Interop.Excel._Worksheet)objSheets[1];
&&&&&&&&&&&&&&&&//页边距
&&&&&&&&&&&&&&&&objSheet.PageSetup.TopMargin&=&excel.InchesToPoints(0.575);
&&&&&&&&&&&&&&&&objSheet.PageSetup.TopMargin&=&excel.InchesToPoints(0.575);
&&&&&&&&&&&&&&&&objSheet.PageSetup.BottomMargin&=&excel.InchesToPoints(0.575);
&&&&&&&&&&&&&&&&objSheet.PageSetup.LeftMargin&=&excel.InchesToPoints(0.575);
&&&&&&&&&&&&&&&&objSheet.PageSetup.RightMargin&=&excel.InchesToPoints(0.575);
&&&&&&&&&&&&&&&&try
&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&switch&(this.txtPayment.Text)
&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&case&&预付30%定金出货前付清全款&:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&yufuk&=&&预付款(30%)&;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&case&&预付20%定金出货前付清全款&:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&yufuk&=&&预付款(20%)&;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&case&&预付15%定金出货前付清全款&:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&yufuk&=&&预付款(15%)&;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&case&&预付10%定金出货前付清全款&:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&yufuk&=&&预付款(10%)&;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&case&&出货前验货付清全款&:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&yufuk&=&&预付款&;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&case&&月结&:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&yufuk&=&&预付款&;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&excel.Visible&=&&//让后台执行设置为不可见,为true的话会看到打开一个Excel,然后数据在往里写&&&
&&&&&&&&&&&&&&&&&&&&objSheet.Activate();
&&&&&&&&&&&&&&&&&&&&
代码不完整,太长了,只是前半部分
测试导出速度超快滴:
&&&&&&&&private&void&toolStripLabel4_Click(object&sender,&EventArgs&e)
&&&&&&&&&&&&SaveFileDialog&saveFileDialog&=&new&SaveFileDialog();
&&&&&&&&&&&&saveFile……
这个导出来以后都在第一个单元格里了`&&比如我有10列`那么所有的这10列都会占到了同一个单元格里面了
改进一下就好了
代码不完整,太长了,只是前半部分
这是完整的导出代码
引用&5&楼&zhangfengyi&的回复:
代码不完整,太长了,只是前半部分
这是完整的导出代码
楼上的把导出后在一个单元格的问题解决一下然后发上来
saveexcel&.&Filter&=&&Execl&files&(*.xls)|*.xls|文本文件|*.txt&;
&&&&&&&&&&&&&&&saveexcel&.&FilterIndex&=&0;
&&&&&&&&&&&&&&&saveexcel.RestoreDirectory&=&
&&&&&&&&&&&&&&&saveexcel.Title&=&&?出?保存路?&;
&&&&&&&&&&&&&&&saveexcel.FileName&=&
&&&&&&&&&&&&&&&saveexcel.ShowDialog();
&&&&&&&&&&&&&&&string&FileName&=&saveexcel.FileN
&&&&&&&&&&&&&&&&if&(FileName.Length&!=&0)
&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&FileStream&objFileS
&&&&&&&&&&&&&&&&&&&&StreamWriter&objStreamW
&&&&&&&&&&&&&&&&&&&&string&strLine&=&&&;
&&&&&objFileStream&=&new&FileStream(FileName,&System.IO.FileMode.Create,&System.IO.FileAccess.Write);
&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&objStreamWriter&=&new&StreamWriter(objFileStream,&System.Text.Encoding.Unicode);
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&for&(int&i&=&0;&i&&&dt.Columns.C&i++)
&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&strLine&=&strLine&+&dt.Columns[i].ColumnName.ToString()&+&Convert.ToChar(9);
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&objStreamWriter.WriteLine(strLine);
&&&&&&&&&&&&&&&&&&&&strLine&=&&&;
&&&&&&&&&&&&&&&&&&&&for&(int&i&=&0;&i&&&dt.Rows.C&i++)
&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&for&(int&j&=&0;&j&&&dt.Columns.C&j++)
&&&&&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&&&&&strLine&=&strLine&+&dt.Rows[i][j].ToString()&+&Convert.ToChar(9);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&&&&&objStreamWriter.WriteLine(strLine);
&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&strLine&=&&&;
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&objStreamWriter.Close();
&&&&&&&&&&&&&&&&&&&&objFileStream.Close();
&&&&&&&&&&&&&&&&&&&&MessageBox.Show(&?料已?成功?出到:&&+&saveexcel.FileName.ToString(),&&?出完成&,&MessageBoxButtons.OK,&rmation);
用读取数据库的方式应该快点
建议,采用循环导出,不要1次性导出,因为如果数据量大的话,可能很慢。
saveexcel&.&Filter&=&&Execl&files&(*.xls)|*.xls|文本文件|*.txt&;
&&&&&&&&&&&&&&&saveexcel&.&FilterIndex&=&0;
&&&&&&&&&&&&&&&saveexcel.RestoreDirectory&=&
&&&&&&&&&&&&&&&saveexcel.Title&……
跟上上面的一样`&用流往外导出确实要比一个一个往Excel的cell里面导值快`
但是这样格式就乱了`&都在一个单元格里面呢&要是能结合一下就好了
建议,采用循环导出,不要1次性导出,因为如果数据量大的话,可能很慢。
1W行应该没事`采用循环导出效率那个低啊&好像不是电脑在干活
http://topic.csdn.net/u//7c23c4ea-5ed7-49d6-b167-1e202bdbd449.html
大家可以去这个上面看看
就是用的循环导出
数据太多设置进度条
二维数组赋值到单元格
开僻一个新进程来处理`刚才试了一下`也不怎么滴``设进度条也就是提示一下用户而
效率慢还是慢`妈的`就是找不到好办法
数据不是太多,但必须不能用循环,因为每一行都不一样
数据不是太多,但必须不能用循环,因为每一行都不一样
用流导出到文本&就10毫秒左右`导出到excel&800左右,
用流导出,格式没法控制
我想知道时间流费在哪里了,我的机器10秒左右,有的机器5分钟,差的太多了
机子配置不一样`&运行的东西不一样`进程优先级不一样
没有解决办法了
格式比较复杂,不用流输出
导出数据太多就慢
你导出的数据多大呀?我这里有个例子。可以联系我。
用流导出,格式没法控制
一样可以控制
我之前试过用流是最快的,我在CSDN下载区有一个实例,你可参考下:
C#&DataGridView&导出&Excel,只用System.IO文件流快速导出可用窗口代码实例,不受EXCEL版本是否安装Excel的限制,&对20000条记录x&130列数据只需1-2分钟,
http://download.csdn.net/source/1541900
网上好像有实例,找找看。
有很多导出方式,有一种先粘贴到系统内存,再从系统内存粘贴到excel很快的
不见意使用流的方法,&格式没法控,需另存文件才能编辑。
nkhuangyanping,没多大,50条记录,
&&&&如果对于Excel的内部数据格式比较清楚的话,使用流输出也是可以控制格式的。最大的好处是,不需要安装office套件。
&&&&&不过大部分人不愿意花这个时间来研究格式,就乖乖使用微软提供的库操作吧,速度没流输出快是必然的,使用进度条之类的让它好看一点吧。
我用流导出的,你要什么输出什么格式?
把一个二维object数组复制给一个扩大后的Range应该是最好的解决方案
导出到CSV速度是比较快,不过,CSV毕竟不是Excel
??控件特快
http://ufo-crackerx./
3楼的方法貌似不好&建议用OFFICE组件
有没有什么优化方案,改进速度,这么慢怎么用啊,其他的软件导出Excel用的什么方法
引用&5&楼&zhangfengyi&的回复:
代码不完整,太长了,只是前半部分
这是完整的导出代码
猩猩哥哥&&为什么&Microsoft.Office. Interop.Excel点不出来?&&&是不是&Microsoft&Office&2003的问题?
这样的格式用什么方式导出更适合
这样的格式用什么方式导出更合适
追求速度,只能用&流文件的方式&导出EXCEL!
C#导出Excel速度奇慢,大概要5分钟时间,这个怎么解决
webform还是WINFORM?
不行了数据量小点,用CSV
数量量非常小,用CSV,格式怎样控件,要求有合并单元格,控制页边距等
用ado&导入导出
求winform程序好用进度条
c#调用COM组件导出excel客户端不装office可以吗
对Excel的com缺少研究,之前下载过一个mvp的代码,速度也很慢。在没有比较好的方案之前,建议楼主使用异步结合进度条来创建Excel文档,首先解决掉窗体假死。
测试导出速度超快滴:
C#&code?9606162&&&&&&&&private&void&toolStripLabel4_Click(obje……
这个方法很好~!不过就是导出的时候不知道怎么会事收出的在第一单元格里,后来看了我自己原来的写的一个WEB项目里的东西才现只要修改utf-8为gb2312就可以分开单元格了。弄好了回来写在这里给后来的人用。当前访客身份:游客 [
子在川上曰:逝者如斯夫,不舍昼夜。
:引用来自“Neoman”的评论还有用vbs的吗 我喜欢用...
:还有用vbs的吗
:你带入100试试
:引用来自“wzugang”的评论四手妙弹 其实这两句话...
:四手妙弹
:为什么我接受数据的时候会跑飞啊?
:矢量图,就是这样的
:没用任何第三方jar
今日访问:208
昨日访问:272
本周访问:208
本月访问:10732
所有访问:123430
C#:使用OleDb从Excel表格中读取信息到DataTable
发表于1年前( 14:38)&&
阅读(234)&|&评论()
0人收藏此文章,
C#:使用OleDb从Excel表格中读取信息到DataTable
从Excel表格中将数据读入到DataTable数据类型中,我是通过使用OLEDB来实现的
(OLEDB是Object Linking and Embedding Database的缩写)
现有一个扩展名为xlsx的工作簿文件“节气表.xlsx”,在工作表Sheet1中有24个节气的信息
本文中的示例程序(代码将在后面给出)读取这个数据表后的效果如下图:
可以看出:OleDb读入一个Excel工作表(Sheet)的数据后,工作表的第一行会变成标题,第二行起,逐行变为DataTable的一个数据行(Row)
示例程序控件说明:
程序代码:
using&System.Collections.G
using&ponentM
using&System.D
using&System.Data.OleDb;
using&System.D
using&System.L
using&System.T
using&System.Threading.T
using&System.Windows.F
namespace&ExcelReader
&&&&public&partial&class&FormMain&:&Form
&&&&&&&&public&FormMain()
&&&&&&&&&&&&InitializeComponent();
&&&&&&&&private&void&FormMain_Load(object&sender,&EventArgs&e)
&&&&&&&&&&&&txtXlsxPath.Text&=&@"节气表.xlsx";
&&&&&&&&&&&&txtSheetName.Text&&=&@"Sheet1";
&&&&&&&&///&&summary&
&&&&&&&&///&按钮:从EXCEL工作簿中读取信息
&&&&&&&&///&&/summary&
&&&&&&&&///&&param&name="sender"&&/param&
&&&&&&&&///&&param&name="e"&&/param&
&&&&&&&&private&void&btnRead_Click(object&sender,&EventArgs&e)
&&&&&&&&&&&&dgvTable.DataSource&=&ReadFromExcel(txtXlsxPath.Text,&txtSheetName.Text);
&&&&&&&&///&&summary&
&&&&&&&&///&从EXCEL工作簿中读取信息到DataTable(需要System.Data.OleDb)
&&&&&&&&///&&/summary&
&&&&&&&&///&&param&name="sXlsxPath"&EXCEL工作簿文件地址&/param&
&&&&&&&&///&&param&name="sSheetName"&工作表名称&/param&
&&&&&&&&private&DataTable&ReadFromExcel(string&sXlsxPath,&string&sSheetName)
&&&&&&&&&&&&string&sExt&=&System.IO.Path.GetExtension(sXlsxPath);
&&&&&&&&&&&&string&sConn&=&"";
&&&&&&&&&&&&if&(sExt&==&".xlsx")&//Excel2007
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&sConn&=
&&&&&&&&&&&&&&&&&&&&&"Provider=Microsoft.ACE.OLEDB.12.0;"&+&
&&&&&&&&&&&&&&&&&&&&&"Data&Source="&+&sXlsxPath&+&";"&+&
&&&&&&&&&&&&&&&&&&&&&"Extended&Properties='Excel&12.0;HDR=YES'";
&&&&&&&&&&&&}
&&&&&&&&&&&&else&if&(sExt&==&".xls")&//Excel2003
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&sConn&=
&&&&&&&&&&&&&&&&&&&&"Provider=Microsoft.Jet.OLEDB.4.0;"&+
&&&&&&&&&&&&&&&&&&&&"Data&Source="&+&sXlsxPath&+&";"&+
&&&&&&&&&&&&&&&&&&&&"Extended&Properties=Excel&8.0";
&&&&&&&&&&&&}
&&&&&&&&&&&&else
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&throw&new&Exception("未知的文件类型");
&&&&&&&&&&&&}
&&&&&&&&&&&&OleDbConnection&oledbConn&=&new&OleDbConnection(sConn);
&&&&&&&&&&&&oledbConn.Open();
&&&&&&&&&&&&OleDbDataAdapter&command&=&new&OleDbDataAdapter(
&&&&&&&&&&&&&&&&"SELECT&*&FROM&["&+&sSheetName&+&"$]",&oledbConn);
&&&&&&&&&&&&DataSet&ds&=&new&DataSet();
&&&&&&&&&&&&command.Fill(ds,&sSheetName);
&&&&&&&&&&&&oledbConn.Close();
&&&&&&&&&&&
&&&&&&&&&&&&return&ds.Tables[sSheetName];
编写这个程序的时候遇到过两个异常,解决方法如下:
1)异常“外部表不是预期的格式”:
写连接表达式时(上面代码中的sConn),要对扩展名为.xlsx和.xls分类讨论
2)异常:“找不到可安装的ISAM”:
读取.xlsx格式的Excel表格时,连接表达式的Extended Properties部分,等于号后面的字符是用单引号括起来的,如果漏写单引号引起的,补上就好了
更多开发者职位上
1)">1)">1" ng-class="{current:{{currentPage==page}}}" ng-repeat="page in pages"><li class='page' ng-if="(endIndex<li class='page next' ng-if="(currentPage
相关文章阅读}

我要回帖

更多关于 单选表单怎么写字段 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信