见过的代码都是这种方法,把EXCEL文档当成数据库,SHEET当成表格,然后取数.
这种方法麻烦,不算.
strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\\contacts.xls;Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [EXCEL中的表名$]", strConn);
DataSet myDataSet = new DataSet();
myCommand.Fill(myDataSet);-------------
因我要取数的EXCE文档,数据排放是不规则的.比如:我只要取A5那1个单元格的值.请问怎么做?
这种方法麻烦,不算.
strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\\contacts.xls;Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [EXCEL中的表名$]", strConn);
DataSet myDataSet = new DataSet();
myCommand.Fill(myDataSet);-------------
因我要取数的EXCE文档,数据排放是不规则的.比如:我只要取A5那1个单元格的值.请问怎么做?
解决方案 »
- textbox控件添加TextBoxWatermarkExtender扩展(在线等)
- 求翻译!java==>.Net
- 正则替换图片
- 请教个ImageButton的onclick事件.
- checkbox在datagrid里如何实现批量删除
- vb.net進行web開發的問題(挑戰性的)
- 最后50分,问一个很简单的问题!在线等,有急用,解决了马上结>
- 我想实现当在textbox输入职工编号时对应dropdownlist里自动显示职工的姓名.急急急!!!!!!在线等待...............
- asp.net采用Oldb 向Excel文件中插入数据问题?在线等待!!!!!!!!!!!!
- 能帮助解决问题!就是高手,给分!!!!!!!!!
- Cookie数据能否跨域共享?如果能,该怎么做?急!在线等
- 哪里有关于VS.net做asp.net的电子教程?
http://dotnet.aspx.cc/ShowDetail.aspx?id=4EB79F05-B9A4-4E8A-836F-864393F40405
http://dev.csdn.net/develop/article/35/35063.shtm
http://dev.csdn.net/develop/article/34/34509.shtm
http://dev.csdn.net/develop/article/18/18344.shtm
那么你可以通过操作这个数据集或是将这个DATASET绑定到一个DATAGRID上,在通过操作这个DATAGRID来完成啊!
原文代码:
private void Button1_Click(object sender, System.EventArgs e)
{
//写入Excel的方法:
//定义需要参数。
string SourceFile="Data.XLS"; //源文件名称。
string TemplatePath=Server.MapPath("ExcelTemplate"); //存放源文件的文件夹路径。
string DownloadPath=Server.MapPath("ExcelDownload"); //副本的文件夹路径。
//副本的文件名。
string TempFileName = DateTime.Now.ToString("yyyyMMdd") + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second + ".XLS";
object missing = System.Reflection.Missing.Value;
Excel.Application myExcel=new Excel.Application();
//打开新文件
myExcel.Application.Workbooks.Open(TemplatePath+"\\"+SourceFile,missing,missing,missing,missing,
missing,missing,missing,missing,missing,missing, missing,missing);
Excel.Workbook myBook=myExcel.Workbooks[1];
Excel.Worksheet curSheet = (Excel.Worksheet)myBook.Sheets[2];
string DownloadFilePath=DownloadPath+"\\"+TempFileName;
int i=0;
while (i<=10)
{
myExcel.Cells[4+i,2]=i.ToString();
myExcel.Cells[4+i,3]=i.ToString();
myExcel.Cells[4+i,4]=i.ToString();
myExcel.Cells[4+i,5]=i.ToString();
myExcel.Cells[4+i,6]=i.ToString();
i++;
}
myBook.Saved=true;
//myBook.SaveAs(DownloadFilePath,missing,"","",false,false,Excel.XlSaveAsAccessMode.xlNoChange,1,false,missing,missing);
myBook.PrintPreview(0);
//myBook.PrintOut(missing,missing,missing,missing,missing,missing,missing,missing);
myBook.Close(false, null,null);
myExcel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(myBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel);
myBook = null;
myExcel = null;
GC.Collect();
//Response.Redirect("ExcelDownload//"+TempFileName); //下载文件
}
strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\\contacts.xls;Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [EXCEL中的表名$]", strConn);
DataSet myDataSet = new DataSet();
myCommand.Fill(myDataSet);将这个DATASET绑定到一个DATAGRID上,在通过操作这个DATAGRID来完成啊!
excel.Application.Workbooks.Add ( true );//引用Excel工作簿
excel.Visible = true ;//使Excel可视 但此时的Excel表格是一个空的表格,没有任何内容,下面就来介绍如何往Excel表格中输入数据。 3、往Excel表格中输入数据 在命名空间"Excel"中,还定义了一个类"Cell",这个类所代表的就是Excel表格中的一个单元格。通过给"Cell"赋值,从而实现往Excel表格中输入相应的数据,下列代码功能是打开Excel表格,并且往表格输入一些数据。Excel.Application excel = new Excel.Application () ;
excel.Application.Workbooks.Add ( true ) ;
excel.Cells[ 1 , 1 ] = "First Row First Column" ;
excel.Cells[ 1 , 2 ] = "First Row Second Column" ;
excel.Cells[ 2 , 1 ] = "Second Row First Column" ;
excel.Cells[ 2 , 2 ] = "Second Row Second Column" ;
excel.Visible = true ; 4、实例 下面实例在C#中连接Oracle数据库(Name),从表(TableName)中读取数据,并写入Excel。string cnString="Provider=msdaora.1;Data source=Name; ";
cnString=cnString+"user id=UserName;password=Password";
try
{
OleDbConnection cn=new OleDbConnection (cnString);
cn.Open ();
try
{
string s="select * from Name.TableName";
OleDbCommand cmd=new OleDbCommand (s,cn);
OleDbDataReader dr=cmd.ExecuteReader ();
Excel.Application xlApp = new Excel.Application();
if(xlApp==null){MessageBox.Show ("Can't open Excel!");return;}
xlApp.Application .Workbooks .Add (true);
int row=2,fieldcount;
fieldcount=dr.FieldCount ;
for(int col=0;col<fieldcount;col++) xlApp.Cells [1,col+1]=dr.GetName(col);
while (dr.Read ())
{
for(int col=0;col<fieldcount;col++)
xlApp.Cells [row,col+1]=dr.GetValue(col).ToString();
row++;
}
xlApp.Visible =true;
xlApp=null;
}
catch(Exception ex ){MessageBox.Show (ex.Message );}
finally {cn.Close();}
}
catch(Exception ex){MessageBox.Show (ex.Message );}
}
} 5、安装一个使用COM组件的.NET程序 如果要将这样的程序安装运行在另一台机器上,那么除了安装运行程序外,还做三件事。 首先,是安装.NET运行系统。因为任何一个.NET程序都不能离开.NET运行系统去独立运行。 其次,所调用的COM组件必须要安装在目标机器上。本例中大多数目标机器上都装有Microsoft Office的Excel,一般不会有这个问题。但如果是另一个用户自定义的COM组件,那么这个COM组件在运行.NET程序之前必须先安装好。 最后,转换后的.NET组件DLL文件要安装在目标机器上。因为.NET组件不需要在Windows Registry中注册,所以最简单的方法是将.NET组件DLL文件拷贝到运行程序目录下。如果此.NET组件被多个.NET程序共享,可以将其安装在.NET公用组件区中,从而可被任何一个.NET组件使用。只有当一个.NET组件参与了事务处理时,才需要将它注册为一个COM+组件。因为.NET仍然用传统的COM+机制来处理事务的提交、回滚等。 小结 通过以上讨论,我们知道了在C#中,如何使用Excel的COM组件。需要注意的是,Excel对象包含的许多内容我们没有介绍,在使用过程中需要我们不断学习。也使我们了解了在C#中如何使用COM组件。
http://www.cnblogs.com/elevenwolf/archive/2004/08/30/35324.aspx
你说的方法我知道,但如果有直接的方法,我不想花时间去尝试这种转1手的方法.
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
using Excel;namespace WebApplication
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button1; private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
}
public void CreateExcel()
{
System.Web.HttpContext.Current.Response.Write("<script language=javascript>");
System.Web.HttpContext.Current.Response.Write("alert('sss');");
System.Web.HttpContext.Current.Response.Write("</script>"); Excel.Application excel = new Excel.Application ( ) ;
excel.Application.Workbooks.Add ( true ) ;
excel.Cells[ 1 , 1 ] = "第一行第一列" ;
excel.Cells[ 1 , 2 ] = "第一行第二列" ;
excel.Cells[ 2 , 1 ] = "第二行第一列" ;
excel.Cells[ 2 , 2 ] = "第二行第二列" ;
excel.Cells[ 3 , 1 ] = "第三行第一列" ;
excel.Cells[ 3 , 2 ] = "第三行第二列" ;
excel.Visible = true ;
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void Button1_Click(object sender, System.EventArgs e)
{
CreateExcel();
}
}
}
Excel.Application excel = new Excel.Application ();//引用Excel对象
excel.Application.Workbooks.Add ( true );//引用Excel工作簿
excel.Visible = true ;//使Excel可视 为什么EXCEL并没有启动呀?
Dim oBook As Excel.Workbook
Dim WSheet As New Excel.Worksheet()
oBook = oExcel.Workbooks.Open(FileStr)
WSheet = oBook.Worksheets.Item(1)
WSheet.Select()
WSheet.Unprotect() WSheet.Range("A3").Value = SjDanwei
WSheet.Range("D3").Value = RpYear
WSheet.Range("G3").Value = Danwei
oBook =nothing
oexcel.quit