加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

数据导出到Excel(或Word)源代码大全

发布时间:2021-05-20 14:35:30 所属栏目:大数据 来源: https://blog.csdn.net/kasama1
导读:数据导出到Excel(或Word)源代码大全 标签:?exceldatasetnulloffice数据库generation 2008-11-16 15:24 ? 13988人阅读 ? 评论(15) ? 收藏 ? 举报 ? 分类: ? 数据库应用开发(24)? ? Office(9)? ? ASP .NET(52)? ? VC#(87)? ? VC(25)? 版权声明:
数据导出到Excel(或Word)源代码大全 标签:?exceldatasetnulloffice数据库generation ? 13988人阅读? 评论(15)? 收藏? 举报

? 分类: ? ? ? ? ?

数据导出到Excel(或Word)源代码大全

在日常工作中,大家都习惯Office作为办公软件,因此,在开发软件的时,常常会有把数据导出到Excel等Office软件的需求。在此,收集一些常用的导出文件的源程序,希望给大家带来方便。(不断更新)

一、DataSet数据集内数据转化为Excel

  1. //?作用:把DataSet数据集内数据转化为Excel、Word文件
  2. //?描述:这些关于Excel、Word的导出方法,基本可以实现日常须要,其中有些方法可以把数据导出后
  3. //???????生成Xml格式,再导入数据库!有些屏蔽内容没有去掉,保留下来方便学习参考用之。???
  4. //?备注:请引用Office相应COM组件,导出Excel对象的一个方法要调用其中的一些方法和属性。
  5. public?void?DataSetToExcel(DataSet?ds,string?FileName)
  6. {
  7. ???try
  8. ???{
  9. ??????//Web页面定义
  10. ??????//System.Web.UI.Page?mypage=new?System.Web.UI.Page();
  11. ??????HttpResponse?resp;
  12. ??????resp=HttpContext.Current.Response;
  13. ??????resp.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
  14. ??????resp.AppendHeader("Content-disposition","attachment;filename="+FileName+".xls");
  15. ??????resp.ContentType="application/ms-excel";
  16. //变量定义
  17. ??????string?colHeaders=null;
  18. ??????string?Is_item=null;
  19. //显示格式定义
  20. //文件流操作定义
  21. //FileStream?fs=new?FileStream(FileName,FileMode.Create,FileAccess.Write);
  22. //StreamWriter?sw=new?StreamWriter(fs,System.Text.Encoding.GetEncoding("GB2312"));
  23. ??????StringWriter?sfw=new?StringWriter();
  24. //定义表对象与行对象,同时用DataSet对其值进行初始化
  25. ??????System.Data.DataTable?dt=ds.Tables[0];
  26. ??????DataRow[]?myRow=dt.Select();
  27. int?i=0;
  28. int?cl=dt.Columns.Count;
  29. //取得数据表各列标题,各标题之间以/t分割,最后一个列标题后加回车符
  30. for(i=0;i<cl;i++)
  31. ??????{
  32. ?????????//if(i==(cl-1))??//最后一列,加/n
  33. ?????????//?colHeaders+=dt.Columns[i].Caption.ToString();
  34. //else
  35. ?????????colHeaders+=dt.Columns[i].Caption.ToString()+"/t";
  36. ??????}
  37. ??????sfw.WriteLine(colHeaders);
  38. //sw.WriteLine(colHeaders);
  39. //逐行处理数据
  40. foreach(DataRow?row?in?myRow)
  41. ??????{
  42. //当前数据写入
  43. ????????? ?????????{
  44. ??????????//if(i==(cl-1))
  45. ??????????//???Is_item+=row[i].ToString()+"/n";
  46. ??????????Is_item+=row[i].ToString()+"/t";
  47. ?????????}
  48. ?????????sfw.WriteLine(Is_item);
  49. //sw.WriteLine(Is_item);
  50. ?????????Is_item= ??????resp.Write(sfw);
  51. //resp.Clear();
  52. ??????resp.End();
  53. ???}
  54. ???catch(Exception?e)
  55. ???{
  56. throw?e;
  57. }

二、DataSet数据集内数据转化为Excel文件(2)

///?<summary>
  • ///?ExportFiles?的摘要说明。
  • ///?作用:把DataSet数据集内数据转化为Excel文件
  • ///?描述:导出Excel文件???
  • ///?备注:请引用Office相应COM组件,导出Excel对象的一个方法要调用其中的一些方法和属性。
  • ///?</summary>
  • class?ExportFiles
  • ????private?string?filePath?=?"";
  • ????public?ExportFiles(string?excel_path)
  • ????{
  • ????????//
  • ????????//?TODO:?在此处添加构造函数逻辑
  • ????????filePath?=?excel_path;
  • ????}
  • ???? ????///?将指定的Dataset导出到Excel文件
  • ///?</summary>
  • ///?<param?name="dt"></param>
  • ///?<returns></returns>
  • bool?ExportToExcel(System.Data.DataSet?ds,?string?ReportName)
  • ????????if?(ds.Tables[0].Rows.Count?==?0)
  • ????????{
  • ????????????MessageBox.Show("数据集为空");
  • ????????}
  • ????????Microsoft.Office.Interop.Excel._Application?xlapp?=?new?ApplicationClass();
  • ????????Workbook?xlbook?=?xlapp.Workbooks.Add(true);
  • ????????Worksheet?xlsheet?=?(Worksheet)xlbook.Worksheets[1];
  • ????????Range?range?=?xlsheet.get_Range(xlapp.Cells[1,?1],?xlapp.Cells[1,?ds.Tables[0].Columns.Count]);
  • ????????range.MergeCells?=?true;
  • ????????xlapp.ActiveCell.FormulaR1C1?=?ReportName;
  • ????????xlapp.ActiveCell.Font.Size?=?20;
  • ????????xlapp.ActiveCell.Font.Bold?=?true;
  • ????????xlapp.ActiveCell.HorizontalAlignment?=?Microsoft.Office.Interop.Excel.Constants.xlCenter;
  • ????????int?colIndex?=?0;
  • int?RowIndex?=?2;
  • //开始写入每列的标题
  • foreach?(DataColumn?dc?in?ds.Tables[0].Columns)
  • ????????????colIndex++;
  • ????????????xlsheet.Cells[RowIndex,?colIndex]?=?dc.Caption;
  • ????????}
  • //开始写入内容
  • int?RowCount?=?ds.Tables[0].Rows.Count;//行数
  • for?(int?i?=?0;?i?<?RowCount;?i++)
  • ????????{
  • ????????????RowIndex++;
  • ????????????int?ColCount?=?ds.Tables[0].Columns.Count;//列数
  • ????????????for?(colIndex?=?1;?colIndex?<=?ColCount;?colIndex++)
  • ????????????{
  • ????????????????xlsheet.Cells[RowIndex,?colIndex]?=?ds.Tables[0].Rows[i][colIndex?-?1];//dg[i,?colIndex?-?1];
  • ????????????????xlsheet.Cells.ColumnWidth?=?ds.Tables[0].Rows[i][colIndex?-?1].ToString().Length;
  • ????????????}
  • ????????xlbook.Saved?=? ????????xlbook.SaveCopyAs(filePath);
  • ????????xlapp.Quit();
  • ????????GC.Collect();
  • return? ????}
  • bool?ExportToExcelOF(System.Data.DataSet?ds,153); font-weight:bold; background-color:inherit">string?ReportName)
  • ????{
  • if?(ds.Tables[0].Rows.Count?==?0)
  • ????????????MessageBox.Show("数据集为空");
  • string?FileName?=?filePath;
  • //System.Data.DataTable?dt?=?new?System.Data.DataTable();
  • ????????FileStream?objFileStream;
  • ????????StreamWriter?objStreamWriter;
  • string?strLine?=?"";
  • ????????objFileStream?=?new?FileStream(FileName,?FileMode.OpenOrCreate,?FileAccess.Write);
  • ????????objStreamWriter?=?new?StreamWriter(objFileStream,?System.Text.Encoding.Unicode);
  • ????????strLine?=?ReportName;
  • ????????objStreamWriter.WriteLine(strLine);
  • ????????strLine?=?"";
  • int?i?=?0;?i?<?ds.Tables[0].Columns.Count;?i++)
  • ????????????strLine?=?strLine?+?ds.Tables[0].Columns[i].ColumnName.ToString()?+?"??????????"?+?Convert.tochar(9);
  • ????????objStreamWriter.WriteLine(strLine);
  • ????????strLine?=?"";
  • int?i?=?0;?i?<?ds.Tables[0].Rows.Count;?i++)
  • ????????????strLine?=?strLine?+?(i?+?1)?+?Convert.tochar(9);
  • int?j?=?1;?j?<?ds.Tables[0].Columns.Count;?j++)
  • ????????????{
  • ????????????????strLine?=?strLine?+?ds.Tables[0].Rows[i][j].ToString()?+?Convert.tochar(9);
  • ????????????objStreamWriter.WriteLine(strLine);
  • ????????????strLine?=?"";
  • ????????objStreamWriter.Close();
  • ????????objFileStream.Close();
  • //Microsoft.Office.Interop.Excel._Application?xlapp?=?new?ApplicationClass();
  • //Workbook?xlbook?=?xlapp.Workbooks.Add(true);
  • //Worksheet?xlsheet?=?(Worksheet)xlbook.Worksheets[1];
  • //Range?range?=?xlsheet.get_Range(xlapp.Cells[1,?ds.Tables[0].Columns.Count]);
  • //range.EntireColumn.AutoFit();
  • //xlapp.Quit();
  • ????}?????
  • }
  • 三、生成XML然后转换成Excel方式

    参考资源:http://www.codeproject.com/office/Excel_Export.asp?df=100&forumid=329437&fr=51?(源程序)
    优点:?
    a. 服务端不用安装Excel程序。?
    b. 支持一定的Excel文件格式设置,比如字体大小、颜色、合并单元格等。?
    缺点:?
    a. 与Excel 2000不兼容:由于Excel 2000不支持XML,所以以这种方法生成的Excel文件可能在Excel2000中不兼容(毕竟目前还有不少用户的电脑装的是Excel 2000)。?
    b. 可能不支持Excel文件页边距的设置;不支持Excel文件横向、纵向的设置;不支持Excel模板;?
    c. 编程工作量比较大;?
    d. 生成的文件本质上是XML文件,需要“另存为xls”才能变成真正的Excel文件。?
    e. 性能是好是坏还不清楚,目前还没真正在项目中用过。希望有用过此方案的朋友能介绍一下这个方案的性能。

    四、导出GridView到Excel

    //导出GridView到Excel中的关键之处
  • //用法:?ToExcel(GVStaff,?TextBox1.Text);
  • static?void?ToExcel(System.Web.UI.Control?ctl,153); font-weight:bold; background-color:inherit">string?FileName)
  • {
  • ????HttpContext.Current.Response.Charset?="UTF-8";
  • ????HttpContext.Current.Response.ContentEncoding?=System.Text.Encoding.Default;
  • ????HttpContext.Current.Response.ContentType?="application/ms-excel";
  • ????HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename="+""+FileName+".xls");
  • ????ctl.Page.EnableViewState?=false;
  • ????System.IO.StringWriter??tw?=?new?System.IO.StringWriter();
  • ????HtmlTextWriter?hw?=?new?HtmlTextWriter(tw);
  • ????ctl.RenderControl(hw);
  • ????HttpContext.Current.Response.Write(tw.ToString());
  • ????HttpContext.Current.Response.End();
  • }????????
  • ?????
  • 必须有下面这句!否则不会通过!
  • override?void?VerifyRenderingInServerForm(Control?control)
  • //?Confirms?that?an?HtmlForm?control?is?rendered?for
  • }
  • 五、DataTable导出到Excel

    using?System;
  • using?Microsoft.Office.Interop.Excel;
  • using?System.Windows.Forms;
  • namespace?DongVI
  • ?///?<summary>
  • ?///?DataTable导出到Excel
  • ///?整理:dongVi
  • ?class?DataTableToExcel
  • ?{
  • ??private?DataTableToExcel()
  • ??{
  • ??}
  • ?? ??///?导出Excel
  • ///?<param?name="dt">要导出的DataTable</param>
  • void?ExportToExcel(System.Data.DataTable?dt?)
  • if?(dt?==?null)?return;
  • ???
  • ???Microsoft.Office.Interop.Excel.Application?xlApp?=?new?Microsoft.Office.Interop.Excel.Application();
  • if?(xlApp?==?null)
  • //?lblMsg.Text?=?"无法创建Excel对象,可能您的电脑未安装Excel";
  • ????MessageBox.Show(?"无法创建Excel对象,可能您的电脑未安装Excel"?);
  • return;
  • ???}
  • ???System.Windows.Forms.SaveFileDialog?saveDia?=?new?SaveFileDialog();
  • ???saveDia.Filter?=?"Excel|*.xls";
  • ???saveDia.Title?=?"导出为Excel文件";
  • if(saveDia.ShowDialog()==?System.Windows.Forms.DialogResult.OK
  • ????&&?!string.Empty.Equals(saveDia.FileName))
  • ????Microsoft.Office.Interop.Excel.Workbooks?workbooks?=?xlApp.Workbooks;
  • ????Microsoft.Office.Interop.Excel.Workbook?workbook?=?workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
  • ????Microsoft.Office.Interop.Excel.Worksheet?worksheet?=?(Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
  • ????Microsoft.Office.Interop.Excel.Range?range?=?long?totalCount?=?dt.Rows.Count;
  • long?rowRead?=?0;
  • float?percent?=?0;
  • string?fileName?=?saveDia.FileName;
  • //写入标题
  • int?i?=?0;?i?<?dt.Columns.Count;?i++)
  • ?????worksheet.Cells[1,?i?+?1]?=?dt.Columns[i].ColumnName;
  • ?????range?=?(Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1,?i?+?1];
  • ?????//range.Interior.ColorIndex?=?15;//背景颜色
  • ?????range.Font.Bold?=?true;//粗体
  • ?????range.HorizontalAlignment?=?Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;//居中
  • ?????//加边框
  • ?????range.BorderAround(Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous,?Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin,?Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic,153); font-weight:bold; background-color:inherit">null);
  • //range.ColumnWidth?=?4.63;//设置列宽
  • //range.EntireColumn.AutoFit();//自动调整列宽
  • //r1.EntireRow.AutoFit();//自动调整行高
  • //写入内容
  • int?r?=?0;?r?<?dt.DefaultView.Count;?r++)
  • ????? ?????{
  • ??????worksheet.Cells[r?+?2,?i?+?1]?=?dt.DefaultView[r][i];
  • ??????range?=?(Microsoft.Office.Interop.Excel.Range)worksheet.Cells[r?+?2,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ??????range.Font.Size?=?9;//字体大小
  • ??????range.BorderAround(Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous,248)"> ??????range.EntireColumn.AutoFit();//自动调整列宽
  • ?????}
  • ?????rowRead++;
  • ?????percent?=?((float)(100?*?rowRead))?/?totalCount;
  • ?????System.Windows.Forms.Application.DoEvents();
  • ????range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlInsideHorizontal].Weight?=?Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;
  • if?(dt.Columns.Count?>?1)
  • ?????range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlInsideVertical].Weight?=?Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;
  • try
  • ?????workbook.Saved?=? ?????workbook.SaveCopyAs(fileName);
  • catch?(Exception?ex)
  • //lblMsg.Text?=?"导出文件时出错,文件可能正被打开!/n"?+?ex.Message;
  • ?????MessageBox.Show(?"导出文件时出错,文件可能正被打开!/n"?+?ex.Message?);
  • ????? ????workbooks.Close();
  • if?(xlApp?!=? ?????xlApp.Workbooks.Close();
  • ?????xlApp.Quit();
  • int?generation?=?System.GC.GetGeneration(xlApp);
  • ?????System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
  • ?????xlApp?=? ?????System.GC.Collect(generation);
  • ????GC.Collect();//强行销毁
  • ????#region?强行杀死最近打开的Excel进程
  • ????System.Diagnostics.Process[]?excelProc?=?System.Diagnostics.Process.GetProcessesByName("EXCEL");
  • ????System.DateTime?startTime?=?new?DateTime();
  • int?m,?killId?=?0;
  • for?(m?=?0;?m?<?excelProc.Length;?m++)
  • if?(startTime?<?excelProc[m].StartTime)
  • ?????{
  • ??????startTime?=?excelProc[m].StartTime;
  • ??????killId?=?m;
  • ?????}
  • if?(excelProc[killId].HasExited?==?false)
  • ?????excelProc[killId].Kill();
  • ????}
  • ????#endregion
  • ????MessageBox.Show(?"导出成功!"?);
  • ??}
  • ?}
  • }
  • 六、DataTable导出到excel(2)

    StringWriter?stringWriter?=? HtmlTextWriter?htmlWriter?=?new?HtmlTextWriter(?stringWriter?);
  • DataGrid?excel?=?new?DataGrid();
  • System.Web.UI.WebControls.TableItemStyle?AlternatingStyle?=?new?TableItemStyle();
  • System.Web.UI.WebControls.TableItemStyle?headerStyle?=?new?TableItemStyle();
  • System.Web.UI.WebControls.TableItemStyle?itemStyle?=? AlternatingStyle.BackColor?=?System.Drawing.Color.LightGray;
  • headerStyle.BackColor?=System.Drawing.Color.LightGray;
  • headerStyle.Font.Bold?=? headerStyle.HorizontalAlign?=?System.Web.UI.WebControls.HorizontalAlign.Center;
  • itemStyle.HorizontalAlign?=?System.Web.UI.WebControls.HorizontalAlign.Center;;?
  • excel.AlternatingItemStyle.MergeWith(AlternatingStyle);
  • excel.HeaderStyle.MergeWith(headerStyle);
  • excel.ItemStyle.MergeWith(itemStyle);?
  • excel.GridLines?=?GridLines.Both;
  • excel.HeaderStyle.Font.Bold?=? excel.DataSource?=?dt.DefaultView;//输出DataTable的内容
  • excel.DataBind();
  • excel.RenderControl(htmlWriter);
  • ??
  • string?filestr?=?"d://data//"+filePath;??//filePath是文件的路径
  • int?pos?=?filestr.LastIndexOf(?"//");
  • string?file?=?filestr.Substring(0,pos);
  • if(?!Directory.Exists(?file?)?)
  • ??Directory.CreateDirectory(file);
  • }
  • System.IO.StreamWriter?sw?=?new?StreamWriter(filestr);
  • sw.Write(stringWriter.ToString());
  • sw.Close();
  • 七、通过sql直接导出到Excel数据库

  • exec?master..xp_cmdshell?@#?bcp?"SELECT?au_fname,?au_lname?FROM?pubs..authors?ORDER?BY?au_lname"?queryout?c:/test.xls?-c?-S"soa"?-U"sa"?-P"sa"?@#
  • ??? 注意:参数的大小写,另外这种方法写入数据的时候没有标题。

    ??? 关于通过sql读取EXCEL的方法请参见:http://blog.csdn.net/wonsoft/archive/2008/11/16/3312320.aspx

    八、用OleDB 把 DataSet 数据导出到 Excel文件里

    //dt为数据源(数据表)?
  • //ExcelFileName?为要导出的Excle文件
  • //ModelFile为模板文件,该文件与数据源中的表一致。否则数据会导出失败。
  • //ModelFile文件里,需要有一张?与?dt.TableName?一致的表,而且字段也要一致。
  • //注明:如果不用ModelFile的话,可以用一个空白Excel文件,不过,要去掉下面创建表的注释,让OleDb自己创建一个空白表。
  • string?TableToExcelFile(DataTable?dt,153); font-weight:bold; background-color:inherit">string?ExcelFileName,153); font-weight:bold; background-color:inherit">string?ModelFile)
  • ????File.Copy(ModelFile,ExcelFileName);??//复制一个空文件,提供写入数据用
  • ????
  • if(File.Exists(ExcelFileName)==false)
  • return?"系统创建临时文件失败,请与系统管理员联系!";
  • if(dt?==?return?"DataTable不能为空";
  • int?rows?=?dt.Rows.Count;
  • int?cols?=?dt.Columns.Count;
  • ????StringBuilder?sb;
  • string?connString;
  • if(rows?==?0)
  • return?"没有数据";
  • ????sb?=?new?StringBuilder();????
  • ????connString="Provider=Microsoft.Jet.OLEDB.4.0;Data?Source="+ExcelFileName+";Extended?Properties=Excel?8.0;";????
  • //生成创建表的脚本
  • //----sb.Append("DROP?TABLE?"+dt.TableName);
  • ????
  • /*
  • ????sb.Append("CREATE?TABLE?");
  • ????sb.Append(dt.TableName?+?"?(?");
  • ????for(int?i=0;i<cols;i++)
  • ????{
  • ????????if(i?<?cols?-?1)
  • ????????sb.Append(string.Format("{0}?varchar,",dt.Columns[i].ColumnName));
  • ????????else
  • ????????sb.Append(string.Format("{0}?varchar)",0); background-color:inherit">????}????
  • ????*/
  • //return?sb.ToString();
  • ????OleDbConnection?objConn?=?new?OleDbConnection(connString);
  • ????OleDbCommand?objCmd?=?new?OleDbCommand();
  • ????objCmd.Connection?=?objConn;
  • //objCmd.CommandText=sb.ToString();
  • ????????objConn.Open();
  • //objCmd.ExecuteNonQuery();
  • catch(Exception?e)
  • return?"在Excel中创建表失败,错误信息:"?+?e.Message;
  • ????sb.Remove(0,sb.Length);
  • ????sb.Append("INSERT?INTO?");
  • ????sb.Append(dt.TableName?+?"?(?");
  • for(int?i=0;i<cols;i++)
  • if(i?<?cols?-?1)
  • ????????????sb.Append(dt.Columns[i].ColumnName?+?",");
  • else
  • ????????????sb.Append(dt.Columns[i].ColumnName?+?")?values?(");
  • ????????????sb.Append("@"?+?dt.Columns[i].ColumnName?+?",108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> ????????????sb.Append("@"?+?dt.Columns[i].ColumnName?+?")");
  • //建立插入动作的Command
  • ????objCmd.CommandText?=?sb.ToString();
  • ????OleDbParameterCollection?param?=?objCmd.Parameters;
  • ????????param.Add(new?OleDbParameter("@"?+?dt.Columns[i].ColumnName,?OleDbType.VarChar));
  • //遍历DataTable将数据插入新建的Excel文件中
  • foreach?(DataRow?row?in?dt.Rows)
  • ????{???
  • int?i=0;?i<param.Count;?i++)
  • ????????????param[i].Value?=?row[i];
  • ????????objCmd.ExecuteNonQuery();
  • return?"数据已成功导入Excel";
  • }?
  • //?? Trackback:?http://tb.blog.csdn.net/TrackBack.aspx?PostId=754176
  • 九、利用OLEDB,以excel为数据库,把dataset中的数据导入到excel文件中

    void?exportToExcelByDataset(string?filePath,?DataSet?ds,XmlNode?node)
  • string?sqlstr;?
  • if(fi.Exists)
  • ?????????fi.Delete();
  • //throw?new?Exception("文件删除失败");????
  • else
  • ?????????fi.Create();
  • ???
  • string?mailto:sqlcon=@%22Provider=Microsoft.Jet.OLEDB.4.0;Data?Source="?+?filePath?+?";Extended?ProPerties=Excel?8.0;";
  • ????OleDbConnection?olecon?=?new?OleDbConnection(sqlcon);
  • ????OleDbCommand?olecmd?=?new?OleDbCommand();
  • ????olecmd.Connection?=?olecon;
  • ????olecmd.CommandType?=?CommandType.Text;
  • ????????olecon.Open();
  • ????????????
  • ????????XmlNode?nodec=node.SelectSingleNode("./Method/ShowField");
  • int?ii?=?0;
  • ????????sqlstr?=?"CREATE?TABLE?sheet1(";
  • foreach(XmlNode?xnode?in?nodec.ChildNodes?)
  • ???????????if(ii?==?nodec.ChildNodes.Count?-?1)
  • ???????????{
  • ???????????????if(xnode.Attributes["type"].Value.ToLower()?==?"int"||xnode.Attributes["type"].Value.ToLower()?==?"decimal")
  • ???????????????{
  • ???????????????????sqlstr=sqlstr?+?xnode.Attributes["displayname"].Value?+?"?number)";???????
  • ???????????????}
  • ???????????????????sqlstr=sqlstr?+?xnode.Attributes["displayname"].Value?+?"?text)";
  • ???????????????//?sqlstr=sqlstr?+?xnode.Attributes["displayname"].Value?+?"?text)";
  • ???????????}
  • ????????????????????sqlstr=sqlstr?+?xnode.Attributes["displayname"].Value?+?"?number,";???????
  • ????????????????????sqlstr=sqlstr?+?xnode.Attributes["displayname"].Value?+?"?text,";
  • ???????????}
  • ???????????//??sqlstr?=sqlstr?+?xnode.Attributes["displayname"].Value?+?"?text";???????
  • ???????????ii++;
  • ???????}
  • ???????olecmd.CommandText?=?sqlstr;
  • ???????olecmd.ExecuteNonQuery();
  • ???????int?i=0;i<ds.Tables[0].Rows.Count;i++)
  • ???????{
  • ???????????sqlstr?=?"INSERT?INTO?sheet1?VALUES(";
  • ???????????int?jj=0;
  • foreach(XmlNode?inode? ????????????????if(jj?==?nodec.ChildNodes.Count-1)
  • ????????????????{
  • ????????????????????if(inode.Attributes["type"].Value.ToLower()?==?"int"||inode.Attributes["type"].Value.ToLower()?==?"decimal")
  • ????????????????????{
  • ?????????????????????????sqlstr?=?sqlstr?+?isnull(ds.Tables[0].Rows[i].ItemArray[jj].ToString())?+?")"?;??
  • ????????????????????}
  • ?????????????????????????sqlstr?=?sqlstr?+?"'"?+?isnull(ds.Tables[0].Rows[i].ItemArray[jj].ToString().Replace("'","''"))?+?"')"?;
  • ????????????????}
  • ???????????????? ????????????????{
  • ????????????????????if(inode.Attributes["type"].Value.ToLower()?==?"int"||inode.Attributes["type"].Value.ToLower()?==?"decimal")
  • ????????????????????{
  • ?????????????????????????sqlstr?=?sqlstr?+?isnull(ds.Tables[0].Rows[i].ItemArray[jj].ToString())?+?","?;
  • ????????????????????}
  • ?????????????????????????sqlstr?=?sqlstr?+?"'"?+?isnull(ds.Tables[0].Rows[i].ItemArray[jj].ToString().Replace("'","''"))?+?"',248)"> ????????????????}
  • ????????????????jj++;
  • ???????????olecmd.CommandText?=?sqlstr;
  • ???????????olecmd.ExecuteNonQuery();
  • ????????}??
  • ????????MessageBox.Show(@"Excel文件:"?+?filePath?+?"?导出成功!");
  • catch(Exception?ex)
  • ????????MessageBox.Show(ex.Message);
  • finally
  • ????????olecmd.Dispose();
  • ????????olecon.Close();
  • ????????olecon.Dispose();
  • }
  • //?判断对象为空
  • string?isnull(string?obj)
  • if(obj.Length?>0)
  • return?obj;
  • return?"null";
  • ????}?
  • }
  • 鸣谢:感谢各位作者的无私奉献!世界有你们真精彩。

    (编辑:北几岛)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读