VS2010的导入导出EXCEL

合集下载

vs2010将dategridview导出成excel或word的方法

vs2010将dategridview导出成excel或word的方法

using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;using System.Data.SqlClient;namespace supermarket{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){string sql = "select * from tb_Stock";DataSet ds = BaseClass.SqlHelper.ExecutDataSet(sql);dataGridView1.DataSource = ds.Tables[0];}private void button1_Click(object sender, EventArgs e){string path = Directory.GetCurrentDirectory() + "\\";BaseClass.COut method = new BaseClass.COut();method.ExportExcel(this.dataGridView1, true);MessageBox.Show("导出成功");Microsoft.Office.Interop.Excel.Application excel =newMicrosoft.Office.Interop.Excel.Application(); //引用Excel对象Microsoft.Office.Interop.Excel.Workbook book = excel.Application.Workbooks.Add(path + DateTime.Now.ToString("yyyyMMddHHmm") + ".xls");//引用Excel工作簿excel.Visible = true; //使Excel可视}private void button2_Click(object sender, EventArgs e){string path = Directory.GetCurrentDirectory() + "\\";BaseClass.COut method = new BaseClass.COut();method.ExportDataGridview(this.dataGridView1, true);MessageBox.Show("导出成功");}}}调用的类using System;using System.Collections.Generic;using System.Linq;using System.Text;using Microsoft.Office.Interop.Excel;using System.Data.SqlClient;using System.Windows.Forms;using System.IO;namespace supermarket.BaseClass{class COut{///<summary>/// excel导出///</summary>///<param name="dgv"></param>///<param name="isShowExcle"></param>///<returns></returns>public bool ExportExcel(DataGridView dgv, bool isShowExcle){//文件保存路径为当前文件夹的debug里string path = Directory.GetCurrentDirectory() + "\\";if (dgv.Rows.Count == 0)return false;Microsoft.Office.Interop.Excel._Application xlApp = newMicrosoft.Office.Interop.Excel.Application();if (xlApp == null){return false; //result = 2;}Microsoft.Office.Interop.Excel.Workbook xlbook = xlApp.Workbooks.Add(true);for (int i = 0; i < dgv.ColumnCount; i++){xlApp.Cells[1, i + 1] = dgv.Columns[i].HeaderText;}for (int i = 0; i < dgv.RowCount - 1; i++){for (int j = 0; j < dgv.ColumnCount; j++){if (dgv[j, i].ValueType == typeof(string)){xlApp.Cells[i + 2, j + 1] = "" + dgv[j, i].Value.ToString();}else{xlApp.Cells[i + 2, j + 1] = dgv[j, i].Value.ToString();}}}xlbook.SaveCopyAs(path+ DateTime.Now.ToString("yyyyMMddHHmm") + ".xls");return true;}///<summary>/// word导出///</summary>///<param name="dgv"></param>///<param name="isshowWord"></param>///<returns></returns>public bool ExportDataGridview(DataGridView dgv, bool isshowWord){string path = Directory.GetCurrentDirectory() + "\\";Microsoft.Office.Interop.Word.Document mydoc = newMicrosoft.Office.Interop.Word.Document();//实例化word文档对象Microsoft.Office.Interop.Word.Table mytable;//声明word表格Microsoft.Office.Interop.Word.Selection mysel;//声明word选object myobj;if (dgv.Rows.Count == 0)return false;//生成word对象Microsoft.Office.Interop.Word.Application word = newMicrosoft.Office.Interop.Word.Application();myobj = System.Reflection.Missing.Value;mydoc = word.Documents.Add(ref myobj, ref myobj, ref myobj, ref myobj);word.Visible = true;mydoc.Select();mysel = word.Selection;//将word生成word表格文件mytable = mydoc.Tables.Add(mysel.Range, dgv.RowCount, dgv.ColumnCount, ref myobj, ref myobj);//设置列宽mytable.Columns.SetWidth(40, Microsoft.Office.Interop.Word.WdRulerStyle.wdAdjustNone);//输出标题数据for (int i = 0; i < dgv.ColumnCount; i++){mytable.Cell(1, i + 1).Range.InsertAfter(dgv.Columns[i].HeaderText);}//输出控件中的记录try{for (int i = 0; i < dgv.RowCount; i++){for (int j = 0; j < dgv.ColumnCount; j++){mytable.Cell(i + 2, j + 1).Range.InsertAfter(dgv[j, i].Value.ToString());}}}catch (Exception){ }mydoc.SaveAs(path + DateTime.Now.ToString("yyyyMMddHHmm") + ".doc");return true;}}}SqlHelper类using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.SqlClient;namespace supermarket.BaseClass{class SqlHelper{private static string CONN_STR = @"DataSource=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\db_supermarket.mdf;Integrated Security=SSPI;User Instance=True";//这里是打开vs2010自带的数据库的///<summary>/// insert delete update///</summary>///<param name="sql"></param>///<returns></returns>public static int ExecutNonQuery(string sql){SqlConnection conn = new SqlConnection(CONN_STR);conn.Open();SqlCommand comm = new SqlCommand(sql, conn);int ret = comm.ExecuteNonQuery();conn.Close();return ret;}/// select 取第一行第一列///<returns></returns>public static object ExecutScalar(string selectsql){SqlConnection conn = new SqlConnection(CONN_STR);conn.Open();SqlCommand comm = new SqlCommand(selectsql,conn);object obj=comm.ExecuteScalar();conn.Close();return obj;}/// select 取所有行所有列public static DataSet ExecutDataSet(string selectsql){SqlConnection conn = new SqlConnection(CONN_STR);conn.Open();DataSet ds = new DataSet();//内存数据库,用来保存从数据库服务器上SqlDataAdapter da = new SqlDataAdapter(selectsql, conn);da.Fill(ds);conn.Close();return ds;}}}。

VFP数据导出到EXCEL技术

VFP数据导出到EXCEL技术

VFP数据导出到EXCEL技术VFP数据导出到EXCEL技术我们都知道在EXCEL 中有很多很多的计算公式、灵活多变的计算方式、方便快捷的图表处理、和功能强大的VBA 语言,可以说EXCEL 可能是最好用的表格处理软件。

我敢说:微软的产品中大概就EXCEL 最好!但是,怎样用Foxpro 快速产生统计表,并将数据送到Excel 表格中,从而代替Foxpro 的报表工具呢?我们大家都知道,在Visual Foxpro 3.0及以后版本中提供了一个调用Ole Automation 的函数CREATEOBJECT,用该函数可以让Visual Foxpro 很方便的和其它可以提供Ole Automation 服务的程序进行通讯。

而Excel 更是一个标准的Ole Automation 服务器程序,我们可以在前端将数据传送到后端的Excel 服务程序,用后端服务程序进行表格处理,从而弥补Visual Foxpro的不足。

由于历史原因,我们作报表都习惯用Total、Count、Sum 或者直接在报表中工具中计算,速度最快的大概也就是Total 了,但不知道还有多少人还在坚持使用Total 命令进行计算,有没有更好的计算方法呢?当然有啦!我在实际使用中积累有一定的经验但愿能给各位起到小小的启发。

假设有一表:Table1 是一个人员档案,里面的表结构如下:-----字段名--类型及长度---------编号C,2部门C,10姓名C,10性别C,2出生日期 D职务C,10文化程度C,10内容大概如下TABLE1.DBF---------------------------------编号部门姓名性别出生日期职务文化程度---------------------------------1 工程部张三男1971-01-11 工程师大学本科 2 销售部李四男1967-02-23 经理大学本科 3 工程部王武1954-03-14 技术员大学专科4 总经理室赵洁雅女1975-04-05 秘书硕士研究生5 销售部..1977-05-09 销售经理高中 6 工程部大文1969-03-30 总工程师大学专科7 销售部..1961-10-10 销售经理大学专科8 总经理室庄稼1961-10-10 总经理大学专科当然实际的数据应该比这里多很多,要不还用统计干吗,我不过是举例说明而已。

VFP数据导出到EXCEL技术.

VFP数据导出到EXCEL技术.

VFP数据导出到EXCEL技术我们都知道在 EXCEL 中有很多很多的计算公式、灵活多变的计算方式、方便快捷的图表处理、和功能强大的VBA 语言,可以说 EXCEL 可能是最好用的表格处理软件。

我敢说:微软的产品中大概就 EXCEL 最好!但是,怎样用 Foxpro 快速产生统计表,并将数据送到 Excel表格中,从而代替 Foxpro 的报表工具呢?我们大家都知道,在 Visual Foxpro 3.0及以后版本中提供了一个调用Ole Automation 的函数 CREATEOBJECT,用该函数可以让 Visual Foxpro 很方便的和其它可以提供 Ole Automation 服务的程序进行通讯。

而 Excel 更是一个标准的 Ole Automation 服务器程序,我们可以在前端将数据传送到后端的 Excel 服务程序,用后端服务程序进行表格处理,从而弥补 Visual Foxpro的不足。

由于历史原因,我们作报表都习惯用 Total、Count、Sum 或者直接在报表中工具中计算,速度最快的大概也就是 Total 了,但不知道还有多少人还在坚持使用 Total 命令进行计算,有没有更好的计算方法呢?当然有啦!我在实际使用中积累有一定的经验但愿能给各位起到小小的启发。

假设有一表:Table1 是一个人员档案,里面的表结构如下:-----字段名--类型及长度---------编号C,2部门C,10姓名C,10性别C,2出生日期 D职务C,10文化程度C,10内容大概如下TABLE1.DBF---------------------------------编号部门姓名性别出生日期职务文化程度---------------------------------1 工程部张三男1971-01-11 工程师大学本科2 销售部李四男1967-02-23 经理大学本科3 工程部王武1954-03-14 技术员大学专科4 总经理室赵洁雅女1975-04-05 秘书硕士研究生5 销售部..1977-05-09 销售经理高中6 工程部大文1969-03-30 总工程师大学专科7 销售部..1961-10-10 销售经理大学专科8 总经理室庄稼1961-10-10 总经理大学专科当然实际的数据应该比这里多很多,要不还用统计干吗,我不过是举例说明而已。

VB导出Excel(导入指定格式的Excel文档中)

VB导出Excel(导入指定格式的Excel文档中)

VB导出Excel(导入指定格式的Excel文档中)VB 是常用的应用软件开发工具之一,由于VB的报表功能有限,而且一旦报表的格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便。

因此有很多程序员现在已经充分利用Excel 的强大报表功能来实现报表功能。

但由于 VB 与 Excel 分别属于不同的应用系统,如何把它们有机地结合在一起,是一个值得我们研究的课题。

1、在工程中添加一些报表的引用:如下:Interop.Excel(选择 Microsoft Excel 9.0 Object Library ---Excel 2000)然后选择确定,表示在工程中已经添加了类库。

2、在通用对象的声明过程中定义 Excel 对象dim xlApp As Excel.Application ‘Application 对象是 Excel 对象模型中最高层级的对象,代表Excel应用程序本身,也包含组成工作薄的许多部分,包括工作薄、工作表、单元格集合以及它们包含的数据。

dim xlBook As Excel.Workbook ’设置 xlBook 为一个工作薄dim xlSheet As Excel.Worksheet ‘设置 xlSheet 为一个工作薄的工作表3、在程序中操作 Excel 表常用命令:xlApp.AskToUpdateLinks=False‘来取消讨厌的对话框xlApp.Application.AskToUpdateLinks=False’屏蔽是否更新链接的对话框x lApp.AlertBeforeOverwriting=False’屏蔽弹出保存和覆盖的询问提示框xlApp.Application.DisplayAlerts=False‘屏蔽删除工作表时询问是否删除的对话框xlApp.Visible=False'设置 Excel 对象不可见(或可见)xlBook=xlApp.Workbooks.Open(fileName,2,False)’打开已经存在的 Excel 工作薄文件xlBook.Save()'保存xlBook.Close(True)'关闭工作薄x lApp.Quit()’结束 Excel 对象xlApp=Nothing ‘释放 xlApp 对象xlBook=Nothing ’释放 xlBook 对象xlSheet=Nothing ‘释放 xlSheet 对象4、在运用以上 VB 命令操作 Excel 表时,除非设置 Excel 对象不可见,否则 VB 程序可继续执行其他操作,也能够关闭 Excel,同时也可对 Excel 进行操作。

VC导出导入数据到Excel中

VC导出导入数据到Excel中

VC导出导入数据到Excel中(实例)//在Excel 2000环境下首先利用Visual C++ 6.0,建立一个MFC基于对话框的工程项目,共享DLL,Wi n32平台。

工程名称ExcelTest。

在主对话框中加入一个按钮,ID IDC_EXCELTESTCaption Test Excel双击该按钮,增加成员函数void CExcelTestDlg::OnExceltest()。

在BOOL CExcelTestApp::InitInstance()中,dlg.DoModal();之前增加代码:if (CoInitialize(NULL)!=0){AfxMessageBox("初始化COM支持库失败!");exit(1);}在return FALSE; 语句前,加入:CoUninitialize();选择Menu->View->ClassWizade,打开ClassWizade窗口,选择Add Class->Fro m a type library,选择D:\Program Files\Microsoft Office\office\Excel9.OLB(D: \Program Files\Microsoft Office\是本机上Microsoft Office 2000的安装目录,可根据个人机器上的实际安装目录修改)。

选择_Application、Workbooks、_Workbook、W orksheets、_Worksheet、Range,加入新类,分别为_Application、Workbooks、_ Workbook、Worksheets、_Worksheet、Range,头文件Excel9.h,源文件Excel9. cpp。

在ExcelTestDlg.cpp文件的头部,#include "ExcelTestDlg.h"语句之下,增加:#include "comdef.h"#include "Excel9.h"在void CExcelTestDlg::OnExceltest() 函数中增加如下代码:void CExcelTestDlg::OnExceltest(){_Application ExcelApp;Workbooks wbsMyBooks;_Workbook wbMyBook;Worksheets wssMysheets;_Worksheet wsMysheet;Range rgMyRge;//创建Excel 2000服务器(启动Excel)if (!ExcelApp.CreateDispatch("Excel.Application",NULL)){AfxMessageBox("创建Excel服务失败!");exit(1);}//利用模板文件建立新文档wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true);wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t("g:\\exceltest\\MyTe mplate.xlt")));//得到WorksheetswssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true);//得到sheet1wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")),true);//得到全部Cells,此时,rgMyRge是cells的集合rgMyRge.AttachDispatch(wsMysheet.GetCells(),true);//设置1行1列的单元的值rgMyRge.SetItem(_variant_t((long)1),_variant_t((long)1),_variant_t("This Is A Excel Test Program!"));//得到所有的列rgMyRge.AttachDispatch(wsMysheet.GetColumns(),true);//得到第一列rgMyRge.AttachDispatch(rgMyRge.GetItem(_variant_t((long)1),vtMissing).pdi spVal,true);//设置列宽rgMyRge.SetColumnWidth(_variant_t((long)200));//调用模板中预先存放的宏ExcelApp.Run(_variant_t("CopyRow"),_variant_t((long)10),vtMissing,vtMissin g,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing, vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing, vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing, vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing);//打印预览wbMyBook.SetSaved(true);ExcelApp.SetVisible(true);wbMyBook.PrintPreview(_variant_t(false));//释放对象rgMyRge.ReleaseDispatch();wsMysheet.ReleaseDispatch();wssMysheets.ReleaseDispatch();wbMyBook.ReleaseDispatch();wbsMyBooks.ReleaseDispatch();ExcelApp.ReleaseDispatch();}。

如何在VB中实现输出到Excel

如何在VB中实现输出到Excel

如何在VB中实现输出到Excelvisual basic 2009-12-04 12:38:22 阅读61 评论0字号:大中小订阅首先要在工程中添加引用“Microsoft Excel 9.0 Object Library”我们使用三个对象Excel.ApplicationExcel.WorkBookExcel.WorkSheet然后我们的目标是:能新建一个Excel文件。

讲某些行列进行合并,设置列宽,填入一个数据,将这个Excel 保存。

Public Sub'定义对象Dim xlApp As Excel.ApplicationDim xlBook As Excel.WorkbookDim xlSheet1 As Excel.WorksheetDim xlSheet2 As Excel.WorksheetSet xlApp = CreateObject("Excel.Application")Set xlBook = xlApp.Workbooks.AddSet xlSheet1 = xlBook.Worksheets("sheet1")Set xlSheet2 = xlBook.Worksheets("sheet2")'参数是下标!!!一定是按照Sheet1,Sheet2,Sheet3这样的顺序来的。

= "值班表" '修改工作簿的名称,就是将显示的名称换掉 = "呼拉拉" '同上xlSheet1.PageSetup.Orientation = xlLandscape '打印设置-- 设置为横向xlSheet1.PageSetup.TopMargin = 20 '一下四部分为设置Excel的显示格式xlSheet1.PageSetup.BottomMargin = 20xlSheet1.PageSetup.LeftMargin = 8xlSheet1.PageSetup.RightMargin = 8xlApp.Visible = True 'Excel文件是不是显示With xlSheet1.Columns.item(1).ColumnWidth() = 2 '列宽大小.Range(.Cells(1, 1), .Cells(3, 1)).Merge '合并.Cells(1, 1).Value = "123" '填入数据End WithxlApp.Visible = False '这样写,Excel的操作就不显示了。

Visual Basic .Net导入数据库数据到Excel表格

Visual Basic .Net导入数据库数据到Excel表格

Visual Basic .Net导入数据库数据到Excel表格通过此示例可以方便的把Sql Server数据库中数据表导入到Excel表格中,同样对于其他类型的数据库,如果也需要导入数据到Excel表格,只需要修改此示例中数据连接部分的代码就可以了。

以下是在Visual Basic .Net中导入Sql Server数据库到Excel表格的具体的实现步骤:1. 启动Visual Studio .Net。

2. 选择菜单【文件】|【新建】|【项目】后,弹出【新建项目】对话框。

3. 将【项目类型】设置为【Visual Basic项目】。

4. 将【模板】设置为【Windows应用程序】。

5. 在【名称】文本框中输入【Visual Basic .Net导入数据库数据到Excel 表格】。

6. 在【位置】的文本框中输入【E:\项目】,然后单击【确定】按钮,这样在"E:\项目"目录中就产生了名称为"Visual Basic .Net中操作Word文档"的文件夹,并在里面创建了名称为"Visual Basic .Net导入数据库数据到Excel表格"的项目文件。

7. 把Visual Studio .Net的当前窗口切换到【Form1.vb(设计)】窗口,并从【工具箱】中的【Windows窗体组件】选项卡中往Form1窗体中拖入下列组件,并执行相应的操作:五个Label组件。

五个TextBox组件。

一个Button组件,用以实现导入Sql Server数据库到Excel表格,并在这个Button组件拖入Form1的设计窗体后,双击它们,则Visual Stuido .Net会在Form1.vb文件分别产生这组件的Click事件对应的处理代码。

8. 选中【解决方案管理器】,右击【引用】,在弹出的菜单中选中【添加引用】后,按照图01所示,加入要引用的COM组件"Microsoft Excel 9.0 Object Library":图01:【Visual Basic .Net导入数据库数据到Excel表格】项目【添加引用】对话框9. 把Visual Studio .Net的当前窗口切换到Form1.vb的代码编辑窗口,并在Form1.vb文件首部添加下列代码,下列代码是导入下面使用的数据类所在的命名空间:10. 用下列代码替换Form1.vb中的InitializeComponent过程对应的代码,下列代码作用是初始化窗体中加入的组件:至此【Visual Basic .Net导入数据库数据到Excel表格】项目的界面设计和功能实现的准备工作就完成了,具体如图02所示:图02:【Visual Basic .Net导入数据库数据到Excel表格】项目的设计界面11. 用下列代码替换Form1.vb中的Button1的Click事件对应的处理代码,下列代码功能是根据使用者输入的数据库信息,建立数据连接,打开数据表,并导入到Excel表格中,如果出错则弹出出错信息:至此在上述步骤都正确完成后,【Visual Basic .Net导入数据库数据到Excel表格】项目的全部工作就基本完成了。

经典三种C#导入导出到EXCEL的方法(C#开发人员必备)

经典三种C#导入导出到EXCEL的方法(C#开发人员必备)

C#导入导出EXCEL------------阿秋笔记add by 2011-3-24注:本文中的所有案例全部测试通过,请放心使用!三大功能:1,导入:把EXCEL文件导入到对应的数据库表中2,导出:(1)把HTML页面直接导出到EXCEL;(2)把DataTable对象导出到EXCEL 环境:VS2005 + SQL SERVER 2005 Language:C#1,导入步骤:上传EXCEL文件,保存到服务器某一个文件夹下,然后解析的DataTable中,在分解插入到数据库表中实现代码:(1)前台,Default.aspx 放入一个上传控件FileUpload + 按钮控件Button代码:<asp:FileUpload ID="FU"runat="server"Width="595px"/><asp:Button ID="btnUpload"runat="server"Text="上传"OnClick="btnUpload_Click"/> (2)后台Default.asp.cs代码:-----按钮单击事件btnUpload_Clickprotected void btnUpload_Click(object sender, EventArgs e){if (this.FU.PostedFile == null || this.FU.PostedFile.FileName == "") //判断是否选择上载文件{this.RegisterStartupScript("1","alert('请选择上传的数据文件!');");return;}string m_ExtName =Path.GetExtension(TrimHtml(Path.GetFileName(this.FU.PostedFile.FileName))).ToLower();if ((m_ExtName.Replace(".", "") != "xls")){this.RegisterStartupScript("2","alert('请上传Execl类型文件!');");return;}string newname = DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + m_ExtName;FU.PostedFile.SaveAs(Server.MapPath("~/xx/"+newname));string fPath = Request.PhysicalApplicationPath + "xx/" + newname;fPath = fPath.Replace("\\", "/");DataTable dt = ExcelToDS(fPath, "LAWUSER");bool IsSuccessful = true;string _errorRow = "";foreach (DataRow row in dt.Rows){if (row["姓名"].ToString().Trim().Equals("")){continue;}string id = row["编号"].ToString();string name = row["姓名"].ToString();string tel = row["联系电话"].ToString();string sql = "insert into AA values('" + id + "','" + name + "','" + tel + "')";try{int i = SqlHelper1.ExecuteNonQuery(sql);if (i > 0){this.RegisterStartupScript("4", "susccessfully");}else{ this.RegisterStartupScript("4","插入错误"); }}catch (Exception ex){this.RegisterStartupScript("3","alert('"+ex.Message+"');");}}}-----函数ExcelToDS,这里的ExtandName是指EXCEL中对应的Sheet1修改后的名称private DataTable ExcelToDS(string Path, string ExtandName){string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ Path + ";"+ "Extended Properties='Excel 8.0;'";OleDbConnection conn = new OleDbConnection(strConn);conn.Open();string strExcel = "";OleDbDataAdapter myCommand = null;DataSet ds = null;strExcel = "select * from [" + ExtandName + "$]";myCommand = new OleDbDataAdapter(strExcel, strConn);ds = new DataSet();myCommand.Fill(ds, "table1");return ds.Tables[0];}-----对字符串操作函数TrimHtmlprivate string TrimHtml(string str){return str.Replace("&", "").Replace("<", "").Replace("'", "").Replace("\"","").Replace("\\", "");}(3)数据库表格式:CREATE TABLE [dbo].[AA]([id] [int] NOT NULL,[name] [varchar](50)COLLATE Chinese_PRC_CI_AS NULL,[tel] [varchar](50)COLLATE Chinese_PRC_CI_AS NULL,CONSTRAINT [PK_AA] PRIMARY KEY CLUSTERED([id] ASC)WITH(PAD_INDEX =OFF, STATISTICS_NORECOMPUTE =OFF, IGNORE_DUP_KEY =OFF, ALLOW_ROW_LOCKS =ON, ALLOW_PAGE_LOCKS =ON)ON [PRIMARY])ON [PRIMARY]注意表列与DataTable中的数据一一对应即可2,导出,将HTML导出到EXCEL,注:我这里是后台实现导出,也有用JS脚本导出的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、新建 C++工程 新建自己的 C++工程。 2、添加 Excel 类库 在工程名上右键,选择 Add---Class,选择 MFC Class From TypeLib,如图:
然后添加如图的几个类。
3、修改头文件 进入刚添加进来的几个类头文件中将#import 开头的这句注掉
4、修改提示的错误 将修改过的工程编译一下,出现如下错误:
// }
saRet.Detach(); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
book.SaveCopyAs(COleVariant(strFile)); // cellinterior.ReleaseDispatch();
//
// 景颜色
cellinterior.AttachDispatch(books); cellinterior.put_ColorIndex(COleVariant((short)37));//设置 EXCEL 头一行的背
// for( iRow=1; iRow <= m_rows; iRow++)//设置 EXCEL 其余的背景颜色 (颜色交替变换)
COleVariant covTrue((short)TRUE), covFalse((short)FALSE), covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
CApplication0 app; CWorkbook0 book; CWorkbooks0 books; CWorksheet0 sheet; CWorksheets0 sheets; CRange0 range; CFont1 font; if (!app.CreateDispatch(_T("Excel.Application"))) {
双击提示,在 DialogBox()前加下划线,如图:
5、添加头文件 在使用导出功能的文件中添加头文件:
6、使用 Excel 类库提供的函数将需要导出的数据导出为.xls 文件 经过以上几步,现在可以使用 Excel 类库提供的函数导出数据了。 与网上许多文章相对比一下,导出流程一样。只不过类库函数有所改变。函数名由 Get 改为 get_,Set 改为 put_。
saRet.Create(VT_BSTR, 2, numElements);
range = sheet.get_Range(COleVariant( _T("A2 ")),covOptional);
range = range.get_Resize(COleVariant((short)m_rows),COleVariant((short)m_cols));
BSTR bstr = szTemp.AllocSysString();
saRet.PutElement(index,bstr);
SysFreeString(bstr);
}
}
range.put_Value2(COleVariant(saRet));
// Cnterior cellinterior;
CHeaderCtrl *pmyHeaderCtrl; pmyHeaderCtrl = m_clcData.GetHeaderCtrl();//此句取得 CListCtrl 控件的列表 頭
int iRow,iCol; int m_cols = pmyHeaderCtrl-> GetItemCount(); int m_rows = m_clcData.GetItemCount(); HDITEM hdi; TCHAR lpBuffer[256];
EXCEL
for ( iRow = 1; iRow <= m_rows; iRow++)//将列表内容写入
{
for ( iCol = 1; iCol <= m_cols; iCol++)
{
index[0]=iRow-1;
index[1]=iCol-1;
CString szTemp;
szTemp=m_clcData.GetItemText(iRow-1,iCol-1);
//
books=range.get_Interior();
//
cellinterior.AttachDispatch(books);
//
if(!state)
//
cellinterior.put_ColorIndex(COleVariant((short)36));
//
else
//
cellinterior.put_ColorIndex(COleVariant((short)24));
//设置列宽
range.put_ColumnWidth(_variant_t((long)nWidth));
}
range = sheet.get_Range(COleVariant( _T("A1 ")), COleVariant(colname));
range.put_RowHeight(_variant_t((long)50));//设置行的高度
{
GetCellName(1 ,iCol + 1, colname);
me));
range = sheet.get_Range(COleVariant(colname),COleVariant(colna
pmyHeaderCtrl-> GetItem(iCol, &hdi);
range.put_Value2(COleVariant(hdi.pszText));
// { //
int state=iRow%2;
//
CString i_T("A%d "),iRow+1);
//
// m_cols));
range = sheet.get_Range(COleVariant(index),covOptional); range = range.get_Resize(COleVariant((short)1),COleVariant((short)
bool fFound = false;
hdi.mask = HDI_TEXT;
hdi.pszText = lpBuffer;
hTextMax = 256;
CString colname;
CString strTemp;
for(iCol=0; iCol <m_cols; iCol++)//将列表的标题头写入 EXCEL
二、导出 附录一: 导出 Excel 格式的简单流程 CFileDialog dlg(FALSE,_T("(*.xls)"),NULL,OFN_HIDEREADONLY |OFN_OVERWRITEPROMPT, _T("(*.xls)|*.xls||"),NULL);
if (dlg.DoModal() == IDOK) { //获取路径 CString strFileName=dlg.GetPathName();
// // ls)); //
range = sheet.get_Range(COleVariant( _T("A1 ")),covOptional); range = range.get_Resize(COleVariant((short)1),COleVariant((short)m_co
books = range.get_Interior();
font = range.get_Font();
font.put_Bold(covTrue);
-4108
range.put_VerticalAlignment(COleVariant((short)-4108));//xlVAlignCenter =
COleSafeArray saRet;
DWORD numElements[]={m_rows,m_cols}; //5x2 element array
sheets = book.get_Worksheets(); sheet = sheets.get_Item(COleVariant((short)1));
////////////////////////////////////CListCtrl 控件 report 风格 //////////////////////////////////////////////////////////
MessageBox(_T("Error!")); }
books = app.get_Workbooks();
book = books.Add(covOptional);
sheets = book.get_Worksheets(); sheet = sheets.get_Item(COleVariant((short)1)); range = sheet.get_Range(COleVariant(_T("A1")),COleVariant(_T("A1"))); range.put_Value2(COleVariant(_T("hanhan")));
book.put_Saved(true); book.ReleaseDispatch(); books.ReleaseDispatch(); app.Quit(); app.ReleaseDispatch();
C++使用 VS2010 导出/导入 Excel 的方法及步骤
相关文档
最新文档