Excel导出

2024-07-20

Excel导出(精选6篇)

Excel导出 第1篇

Access和Excel同属于Microsoft Office应用软件中的两个应用程序。这两个应用软件都可以进行数据管理和数据分析。Access数据库对数据的管理和存储结构化程度高,更多地是以数据管理为中心任务。而Excel相对于Access数据库的数据管理而言,对结构化存储方面要求就没有那么严格,而更多的是利用数学模型和数据方法对数据进行复杂的计算分析。实际中,用户可以很好地利用这两个应用程序的特点,结合起来进行有效地数据管理和复杂的数据计算和分析应用。

1 Access数据库表与Excel表的比较

1.1 结构化的Access数据库表

Access数据库将数据存储于Access表中,Access表又可以再存储到数据库“容器”(.mdb)文件中,并对数据库中的表进行关联,同时还可以创建对数据操作的查询、窗体、报表、模块等。

Access数据库中的表是一种结构化的二维表,所谓结构化是指,表的同一列数据具有相同的数据类型(相同字段名、相同数据类型、相同的数据存储宽度等)。每一列称为一个字段,字段的结构化又是由字段的属性来描述。要创建一个Access表,首先要创建表结构,来设计表中的每一个字段及相关属性,然后再向表中添加数据,即数据是在结构化的框架下填入表中的。

1.2 Excel表及Excel表的结构化概念

Excel表存储于Excel工作薄中,一个Excel工作薄可以创建多个Excel工作表。Excel工作表在存储数据时可以不进行结构化直接输入数据,系统根据输入的数据类型自动处理,而没有表结构设计的要求。

在Excel表中,每一列的数据可以是相同类型的数据,也可以是不同类型的数据。实际应用中,大量的Excel表同一列中的数据都是同一类型的数据,这就相当于进行了部分结构化或格式化,也就从一定程度上与Access数据库表有相同点。所以,Excel表是可以导入到Access数据库中,以Access数据库表的形式存储的。

Excel表能很好地与数据库系统结合在一起,成为数据库表,但是,在创建Excel表有一定的要求,即Excel表为“数据列表”或“数据清单”。

“数据列表”或“数据清单”指Excel工作表中包含相关数据的一个二维表区域,“数据列表”中的列称为字段,列标题是数据库中的字段名,字段名在“数据列表”的第一行。除字段名所在行以外,其他每一行称为一个记录,记录是“数据列表”的数据集合。“数据列表”中同一列数据类型相同,“数据列表”中不留空行。

在Excel中,可以把“数据列表”用作数据库。在执行数据库操作时,例如查询、排序或汇总数据时,Excel会自动将“数据列表”视作数据库。

2 Excel表的数据类型格式化

在Excel中,为了保证数据拥有相同的数据格式类型,可以预先格式化整列。格式化单元格数据类型主要有两种方法:一是使用“单元格格式”对话框格式化数据类型,二是使用“数据有效性”格式化数据类型。

2.1 使用“单元格格式”对话框格式化数据类型

对每一列单元格在输入数据前先进行数据类型结构化。结构化方法如下:

选中要结构化的某一列,选择“格式”菜单中的“单元格…”命令,打开“单元格格式”对话框,在此对话框中选择与字段要求一致的数据类型。

2.2 使用“数据有效性”格式化数据类型

Excel中使用数据有效性用户可以建立一定的规则,它规定可以向单元格中输入的数据规则。方法如下:

选定单元格或区域,选择“数据”菜单中的“有效性”命令,打开“数据有效性”对话框,在此对话框中可以设置有效性条件及输入信息和出错信息。

3 Excel的应用

Microsoft Excel不仅具有数据存储的功能,而且具有很强的数据计算能力,特别是Excel可以对多表中的数据有机地结合,并通过丰富的数学模型和方法对数据进行分析。如数据排序,数据筛选,数据分类,运用统计方法对数据进行t检验、回归分析、抽样调查、规划分析等[1]。

在Excel中还可以定义控件、窗体、VBA编程,结合Excel处理函数完成复杂的表格数据处理。

当然Excel与Access系统有着显著的不同,Access注重的是数据存储管理,它可以运用严格的结构定义来存储和管理数据,并运用数据表关联机制,进行数据完整性定义,从而保证数据处理中数据的一致性。但是,Access系统虽然具有大量的数据处理命令,但这些命令中却少见统计或数学处理模型或方法,如要对数据进行t检验、回归分析、抽样调查、规划分析等处理时,用户就必须自己重新进行复杂的编程,实现不易。Excel在这方面就具备了较强的处理能力。所以,用户可以很好的利用这两个软件的特点,利用Access进行数据存储和管理、程序设计、菜单定义、窗体制作等工作,而运用Excel对Access数据库中的数据进行复杂的统计或数学模型分析,大大减少用户不必要的编程[2]。

两者结合进行数据处理的基本过程可以描述为:首先把要处理的Access数据表导出到Excel表文件,然后运用Excel进行数据分析和处理。

3.1 将Access数据表导出到Excel表

方法如下[3]:

(1)打开想导出对象的数据库。

(2)单击要导出的某个对象,再选择“文件”菜单下的“导出”命令,打开“将表××导出为…”的对话框。

(3)在对话框中选择要导出的数据库文件类型,这里选择的是Exce文件类型。

(4)单击“导出”命令按钮,完成导出过程。

3.2 运用Excel进行数据处理和分析

(1)Excel中数据的合并统计

在实际的销售业务中,企业有多个销售部门,各部门都编制自己的一个销售数据表,记录各部门的销售业绩,而公司要对各销售部门的销售业绩要进行汇总,汇总为一个销售业绩总表,也就是数据的合并统计计算。Excel中的“合并计算”功能能够方便地解决用户的这个问题。此功能将多个工作表和数据合并计算存放到另一个工作表中。

(2)Excel中数据的高级筛选

筛选数据列表是一个隐藏所有除了符合用户指定条件之外的行的过程。Excel提供了两种筛选方法:自动筛选和高级筛选。自动筛选方法是基本筛选方法,但遇到复杂问题时,自动筛选功能无法完成,需要使用高级筛选功能来实现。

(3)运用Excel进行市场调查、抽样和相关性分析

市场调查是市场运作中重要的一个环节,在市场调查的基础上再通过频数分析得到数据的分布趋势,然后通过对调查数据的随机抽样,将抽样数据作为总体样本再进行相关分析,从而进一步了解调查指标间的相互关系。通过这一系列的分析处理,为产品或服务的开发提供有用的决策信息。

为完成这些工作,首先利用Excel来创建调查表,并向调查户发放,有调查户填写。用户将填写后的调查表回馈,调查者对回收的调查表汇总,形成汇总数据表。然后,再对汇总表中的数据进行频数分析和抽样相关分析。

4 结束语

Access注重数据存储和管理,而Excel具有很强的数据计算能力,特别是Excel可以对多表中的数据有机地结合,并通过丰富的数学模型和方法对数据进行分析。所以我们结合这两个软件的特点,可以利用Access进行数据存储和管理、程序设计、菜单定义、窗体制作等工作,而运用Excel对Access数据库中的数据进行复杂的统计或数学模型分析,大大减少用户不必要的编程。S

摘要:文章首先描述了Access数据库表与Excel表异同点,然后介绍了将Excel表的数据类型结构化的方法,讨论了将Access数据库表导出到Excel表,并运用Excel中强大的数学分析方法对数据进行分析处理。

关键词:数据类型格式化,数据存储和管理,数据处理和分析

参考文献

[1]恒盛杰资讯.Excel数据分析与处理经典[M].北京:中国青年出版社,2007.

[2]肖慎勇,杨博.数据库及其应用[M].北京:清华大学出版社,2007.

导出数据到Excel的几种方法 第2篇

方法1:调用com组件,导出access数据到Excel,就是直接调用access的导出功能,此方法速度超级快

using Access;

Access.ApplicationClass oAccess = new Access.ApplicationClass;

oAccess.Visible = false;

try

{

//ACCESS9:

oAccess.OpenCurrentDatabase(“d:wcf.mdb”,false,“”);

//导出到excel

oAccess.DoCmd.TransferSpreadsheet(Access.AcDataTransferType.acExport,Access.AcSpreadSheetType.acSpreadsheetTypeExcel9,“工作表名”,“d:wcf.xls”,true,null,null);

//导入txt

// oAccess.DoCmd.TransferText(Access.AcTextTransferType.acExportDelim,“”,“Enterprise”,“d:wcf.txt”,true,“”,0);

oAccess.CloseCurrentDatabase();

oAccess.DoCmd.Quit(Access.AcQuitOption.acQuitSaveNone);

System.Runtime.InteropServices.Marshal.ReleaseComObject (oAccess);

oAccess = null;

MessageBox.Show(“导入成功”);

}

catch(Exception ex)

{

MessageBox.Show(ex.ToString());

}

finally

{

GC.Collect();

}

方法2:此方法速度也是超级快,只不过导出的格式非标准的Excel格式,默认工作表名与文件名相同

string FileName=“d:abc.xls”;

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);

for(int i=0;i

{

strLine=strLine+dt.Columns[i].ColumnName.ToString()+Convert.ToChar(9);

}

objStreamWriter.WriteLine(strLine);

strLine=“”;

for(int i=0;i

{

strLine=strLine+(i+1)+Convert.ToChar(9);

for(int j=1;j

{

strLine=strLine+dt.Rows[i][j].ToString()+Convert.ToChar(9);

}

objStreamWriter.WriteLine(strLine);

strLine=“”;

}

objStreamWriter.Close();

objFileStream.Close();

方法3:用Ado.net 此方法速度较以上两个显得慢了一些,数据量越大越明显

int Id=0;

string Name=“测试”;

string FileName=“d:abc.xls”;

System.Data.DataTable dt=new System.Data.DataTable();

long totalCount=dt.Rows.Count;

long rowRead=0;

float percent=0;

OleDbParameter[] parm=new OleDbParameter[dt.Columns.Count];

string connString = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + FileName +“;Extended Properties=Excel 8.0;”;

OleDbConnection objConn = new OleDbConnection(connString);

OleDbCommand objCmd = new OleDbCommand();

objCmd.Connection = objConn;

objConn.Open();

//建立表结构

objCmd.CommandText = @“CREATE TABLE Sheet1(序号 Integer,名称 varchar)”;

objCmd.ExecuteNonQuery();

//建立插入动作的Command

objCmd.CommandText = “INSERT INTO Sheet1(”+Id+“,”+Name+“)”;

parm[0]=new OleDbParameter(“@Id”, OleDbType.Integer);

objCmd.Parameters.Add(parm[0]);

parm[1]=new OleDbParameter(“@Company”, OleDbType.VarChar);

objCmd.Parameters.Add(parm[1]);

//遍历DataTable将数据插入新建的Excel文件中

for(int i=0;i

{

parm[0].Value=i+1;

for(int j=1;j

{

parm[j].Value =dt.Rows[i][j];

}

objCmd.ExecuteNonQuery();

rowRead++;

percent=((float)(100*rowRead))/totalCount;

// this.FM.CaptionText.Text = “正在导出数据,已导出[” + percent.ToString(“0.00”) + “%]...”;

if(i==dt.Rows.Count-1)

// this.FM.CaptionText.Text = “请稍后......”;

System.Windows.Forms .Application.DoEvents();

}

objConn.Close();

//this.FM.CaptionText.Text = “”;

方法4:此方法调用com组件,速度都慢于以上3个方法

using Excel;

System.Data.DataTable dt=new System.Data.DataTable();

string FileName=“d:abc.xls”;

long totalCount=dt.Rows.Count;

long rowRead=0;

float percent=0;

Excel.Application xlApp=null;

xlApp=new Excel.Application();

Excel.Workbooks workbooks=xlApp.Workbooks;

Excel.Workbook workbook=workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);

Excel.Worksheet worksheet=(Excel.Worksheet)workbook.Worksheets[1];//取得sheet1

Excel.Range range;

//写入字段

for(int i=0;i

{

worksheet.Cells[1,i+1]=dt.Columns[i].ColumnName;

range=(Excel.Range)worksheet.Cells[1,i+1];

}

for(int r=0;r

{

worksheet.Cells[r+2,1]=r+1;

for(int i=0;i

{

// worksheet.Cells[r+2,i+1]=dt.Rows[r][i];

if(i+1!=dt.Columns.Count)

worksheet.Cells[r+2,i+2]=dt.Rows[r][i+1];

}

rowRead++;

percent=((float)(100*rowRead))/totalCount;

// this.FM.CaptionText.Text = “正在导出数据,已导出[” + percent.ToString(“0.00”) + “%]...”;

System.Windows.Forms .Application.DoEvents();

}

range=worksheet.get_Range(worksheet.Cells[2,1],worksheet.Cells[dt.Rows.Count+2,dt.Columns.Count]);

workbook.Saved =true;

workbook.SaveCopyAs(FileName);

//this.FM.CaptionText.Text = “”;

方法5:利用剪贴板,有人说此方法很快,但是我用时,这种方法最慢,请高手指点.

System.Data.DataTable dt=new System.Data.DataTable();

string filePath=@“d:abc.xls”;

object oMissing = System.Reflection.Missing.Value;

Excel.ApplicationClass xlApp = new Excel.ApplicationClass();

try

{

xlApp.Visible = false;

xlApp.DisplayAlerts = false;

Excel.Workbooks oBooks = xlApp.Workbooks;

Excel._Workbook xlWorkbook = null;

xlWorkbook = oBooks.Open(filePath,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,

oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing);

Excel.Worksheet xlWorksheet;

// 添加入一个新的Sheet页,

xlWorksheet = (Excel.Worksheet)xlWorkbook.Worksheets.Add(oMissing,oMissing,1,oMissing);

// 以TableName作为新加的Sheet页名。

xlWorksheet.Name =“企业名录”;

// 取出这个DataTable中的所有值,暂存于stringBuffer中。

string stringBuffer = “”;

for( int j=0; j

{

for( int k=0; k

{

stringBuffer += dt.Rows[j][k].ToString();

if( k < dt.Columns.Count - 1 )

stringBuffer += “t”;

}

stringBuffer += “n”;

}

// 利用系统剪切板

System.Windows.Forms.Clipboard.SetDataObject(“”);

// 将stringBuffer放入剪切板。

System.Windows.Forms.Clipboard.SetDataObject(stringBuffer);

// 选中这个sheet页中的第一个单元格

((Excel.Range)xlWorksheet.Cells[1,1]).Select();

// 粘贴!

xlWorksheet.Paste(oMissing,oMissing);

// 清空系统剪切板。

System.Windows.Forms.Clipboard.SetDataObject(“”);

// 保存并关闭这个工作簿。

xlWorkbook.Close( Excel.XlSaveAction.xlSaveChanges, oMissing, oMissing );

System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkbook);

xlWorkbook = null;

导出效率导出质量 第3篇

关键词:小学语文;课堂导入;以旧引新;渲染情景;设置疑问

随着现代教育手段的日渐更新与快速发展,越来越多的导入方法被运用到了课堂教学实践中。良好的课堂导入不仅能快速、有效地集中学生的注意力,还能使整个课堂教学都呈现出生机勃勃之效。可以说,“良好的开端是成功的一半。”笔者身为一名基层小学语文教师,对小学语文课堂常用的导入方式进行了初步总结,具体如下:

一、以旧引新,巧妙导入新课

新知识与旧知识之间总是存在着千丝万缕的密切关系,可以说,新知识的学习与掌握正是建立在深刻认知大量旧知识、旧内容的基础之上的。鉴于新、旧知识之间的重要关系,笔者认为,小学语文教师可以尝试以旧引新,进行新课的巧妙导入。这样就能在学生回忆、巩固已学旧知识的同时,自然而然地将注意力过渡到对新知识的具体学习上。

如,在教学《荷花》这一课文时,笔者并没有急于传授新课,而是在上课一开始就鼓励学生认真回忆之前所学过的关于“荷花”的相关诗文。学生纷纷争先恐后地背诵他们记忆中描写“荷花”的诗句:

泉眼无声惜细流, 树荫照水爱晴柔。 小荷才露尖尖角,早有蜻蜓立上头。

毕竟西湖六月中,风光不与四时同。 接天莲叶无穷碧,映日荷花别样红。

……

一时间,课堂气氛空前热烈而高涨。在此基础上,笔者趁势点明学习主题:“这节课,我们来学习《荷花》这篇课文,看看作者描写荷花的角度与所背古诗描写荷花的角度是否相同……”如此,通过回忆、背诵已学过的古诗,学生的注意力得以快速调整、集中到了《荷花》这一课文的描写角度上来,从而巧妙实现了新课的导入。

二、渲染情境,巧妙导入新课

教师若是能结合教学内容为学生创设直观、形象、立体的学习情境,更能有效集中学生的注意力,诱发其学习兴趣。而这恰恰正是课堂导入所要实现的重要教学目标。所以,小学语文教师可通过渲染情境,切实加强课堂导入的实际效果。

如,在教学《安塞腰鼓》一文时,笔者就利用现代教育设备为学生播放了一段关于安塞腰鼓的舞蹈视频。通过观看陕西人民的舞蹈表演,学生早已被安塞腰鼓磅礴的气势以及精湛的表现力所深深折服。自然而然地也对《安塞腰鼓》这一课文产生了浓厚的探究兴趣,因为他们在直观接触了安塞腰鼓后,更想知道文字表现中的安塞腰鼓是否仍具有视频中的恢弘气势。由此不难看出,现代教育技术所创设的教学情景使得学生的注意力快速且有效的集中到了语文课文学习上来,也充分证明了渲染情景之于巧妙创设新课导入的积极作用。

三、设置疑问,巧妙导入新课

正所谓“学贵有疑,小疑则小获,大疑则大获。”教育实践也表明恰到好处的疑问能充分诱发学生的好奇探究心理,并最大限度地活跃其思维与智慧。因此,笔者认为小学语文教师可以在课堂导入中灵活嵌入契合教学内容的疑难问题,这样便可在“以疑促思”的过程中轻松实现新课的巧妙导入。

如,在教学《谷底的秘密》这一课时,笔者在上课一开始就要求学生齐声朗读课文题目。随后向学生提问道:“读了这个题目之后,你们有哪些疑问吗?”笔者的问题一抛出,学生便争先恐后地提出了自己读了题目之后所产生的疑问。“谷底有什么秘密呢?”“谷底为什么会有秘密呢?”“谷底的秘密是怎样被发现的呢?”“谷底的秘密带给人什么启示呢?”……这时,无需笔者命令,学生便会迫不及待地投入到课文的具体学习活动之中。

再如,在教学《火星——地球的“孪生兄弟”》时,笔者便在上课之初便向学生提出了一个问题:“我们人类都有兄弟姐妹,那么,大家想一想,地球有兄弟姐妹吗?”在大多数学生给出否定的回答之后,笔者又趁势提出了一个问题:“可是,科学家却通过大量的研究与发现,地球也有一个孪生兄弟——火星。大家知道为什么科学将火星看做是地球的孪生兄弟吗?希望大家通过认真学习课文能回答老师提出的这个问题。”学生自然是满怀好奇地答应了。如此,通过在课堂导入中设置疑问,就能使学生以一种好奇的心情学习课文、寻找答案,其学习注意力也就顺其自然地集中在了语文课堂学习活动之中。充分实现了借助疑问设置巧妙导入新课的良好效果。

总而言之,小学语文有效课堂导入的方式有多种。只要能达到集中学生注意力、调动学生学习兴趣、创设良好学习情景目的的导入方式都应当是有效的课堂导入方式。小学语文教师只需要根据具体的教学内容以及所教学生的实际情况灵活选择即可。以上仅为笔者班门弄斧的一些粗鄙见解,不当之处还望教学同仁多多指正,以促进笔者小学语文教育事业的进步与发展。

参考文献:

[1]王勤洁.敲响课堂教学的第一声:发挥课件优势 优化小学语文课堂导入[J].中国教育技术装备,2012.

[2]王翼炜.引生入文 导出精彩:例谈小学语文课堂教学的导入艺术[J].科学大众,2014.

Excel导出 第4篇

1 实现方法

1.1 Excel导入sql server

1.1.1 实现方法

Excel文件可以认为是数据库,excel工作表名称加"$"可以看作是数据库中的表名,通过微软microsoft.jet.oledb连接excel数据库,通过sql语句读取数据。Excel的列可以看作是数据表的列,列名为”F”+序号+”$”,序号即列的顺序号(1…n)。对于合并的单元格,数据算作是被合并前的最左、最上侧的数据。

数据文件的读取

首先,生成数据库联接对象OleDbConnection,new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+excel文件名+";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'");

注意:HDR=Yes表示电子表格第一行是标题,不当数据处理。若HDR=NO则表示第一行是数据。通常要求客户将第一行置为标题以方便程序处理。

其次,适用sql语言读取数据表,语句的形式通常为“select字段名1,字段名2,……,字段名n from“+excel工作表名+”$”。

最后,连接sql server,并循环将数据插入sql server中。

1.1.2 存在问题及解决方法

在实际应用中,客户提供的excel文件常是不规范的,包括列顺序不规范,列名称不规范。在实际应用中,常常出现多行表头,用户在表头中存放标题等信息。如果忽视这些问题,在数据读取过程中可能引发错误造成程序死机,造成软件容错性能差。此外,对于不规范的数字输入应采取转换(比如全角数字)和提示。

对于列标题的读取,分两种情况:单表头,即第一行是列2标题,第二行及以下都是数据;多表头,客户往往喜欢在excel表前面加公司名称及文件标题。

单表头处理,设计ReadSchemal函数实现列名称的对齐,打开excel后不读取数据只读取列信息,具体语句是:ExecuteReader(CommandBehavior.SchemaOnly)。图1截取了某软件的一个程序片断。

多表头处理,生成OleDbConnection对象时,置HDR=NO,即认定excel中工作表没有列标题,读取数据后,将多余的行放弃不处理,直接处理列标题行。

在确定处理完列标题行后,接着处理列顺序、列名称不规范问题,需要在读取excel数据前进行数据列对齐操作。如图2所示,生成excel列标题与sql server数据表的列名称的映射关系,即生成如下所示的字符串“select字段名1,字段名k,字段名m……,字段名n from”。图2是某系统中数据列对齐操作的界面,当然可以在确定excel列名称后检查列顺序和列名称是否是规范的,若是规范的则不弹出数据对齐界面,以降低操作复杂度。

1.2 数据库查询结果写入excel

拷贝模板文件(xlt)另存为xls文件,用oledb方式连接xls文件,连接sql server,执行sql语句,得到结果后写入excel。

2 结论

Excel数据导入sql server数据库及查询结果导出excel文件是管理信息系统常用的功能。本文基于c#.NET,实现了sql server与表格的数据批量导入导出,该方法在一些管理系统中得到了应用,实践证明该方法切实可行。

参考文献

[1]李志云.C#对SQL Server中的数据导入导出[J].电脑编程技巧与维护,2009(17):43-46.

[2]陈瑾.在C#中实现SQL server和Excel之间的数据传输[J].苏州市职业大学学报,2010,21(2):41-45.

[3]陈瑾.在C#中实现SQL server和Excel之间的数据传输[J].苏州市职业大学学报,2010,21(2):41-45.

[4]余秋明.基于C#实现SQL Server和Oracle数据库间数据迁移[J].电脑知识与技术,2009,5(2):7842-7844.

Excel导出 第5篇

在互联网高速发展的今天, 很多企事业单位建立了自己的网站, 网站信息管理员平时把数据输入到网站的数据库, 网站程序会自动计算、统计、分析数据, 并产生用户所需的报表, 但目前很多B/S结构的信息管理系统, 数据的输入还是只能一条一条记录地输入, 输出的报表格式固定不能满足用户的需求。对于信息管理员来说, 很多的数据还是存储在Excel工作簿中, 比如:某手机经营店上了一套进销存管理系统, 店里每次进货都是几百上千地进, 供货商会给出Excel格式的进货单, 存储的信息是手机串号、机型、品牌、进价等信息, 对于手机经营店来说, 希望能够直接把供货商给的Excel工作表数据导入系统, 如果自己输入, 工作量很大。企业应用软件最后输出结果都是报表的形式, 他们希望输出的报表能够进行二次分析利用。对于开发信息管理系统的程序员来说, 报表的显示和打印是整个开发过程中最麻烦但又必须做的事情, 如果我们能把报表输出结果转化到Excel文件中, 提供给用户进行二次加工处理, 这样就提高了程序的通用性。本文介绍了A SP技术实现网站数据库和Excel交互的方式, 给出了程序实例。

1相关技术简介

(1) Excel电子表格。Excel是微软办公套装软件的一个重要的组成部分, 它可以进行各种数据的处理、统计分析和辅助决策操作, 广泛地应用于管理、统计财经、金融等众多领域。大部分人都是用它来进行数据处理, 制作电子表格。 (2) A SP和SQ L Server数据库。A SP是一种服务器端脚本编写环境, 可以用来创建和运行动态网页或W eb应用程序。A SP网页可以包含H TM L标记、普通文本、脚本命令以及C O M组件等。它可以与数据库和其它程序进行交互, 是一种简单、方便的编程工具。SQ L Server是目前比较流行的关系数据库管理系统, 广泛应用于网站的后台数据库。A SP与SQ L Server数据库的组合是构建商务网站的一种解决方案。

2 ASP实现批量导入Excel工作表

下面以笔者开发的一套手机管理系统为例, 介绍如何将Excel文件中保存的手机入库信息导入到网站后台数据库的实现过程。这里以SQ L Server作为网站的后台数据库。

2.1将需要导入的Excel文件上传到网站目录。上传的目的主要是为了更方便地读取Excel文件的内容。笔者开发的思路是使用A SP连接Excel文档, 打开指定的工作表, 读取Excel工作表中的记录, 再写入到SQ L Server数据库中。上传文件的实现, 这里就不详细介绍, 可以使用组件。假设上传到网站根目录的excel_up文件夹。

上传入库信息的网页“pl_phone_lr.asp”的界面如下图1所示。

在开发的时候, 我们先向客户要了一个手机入库信息电子表格, 和客户一起商量了需要导入的数据的格式, 有哪些字段, 字段的数据类型, 字段大小等。具体格式要求如下图2所示。

其中手机串号为15位数字字符, 工作簿文件的命名没有要求, 表的名为固定为“入库细表”, 这个很重要, 不能改变, 不然后面的程序找不到要读取的表名。

2.2设计Excel文档导入到SQ L Server数据库的程序。

(1) 图1的界面, 浏览找到需要上传的文件后, 按下“开始上传”按钮提交表单, 网页跳转到如下图3所示的网页 (upload.asp) 。

此网页文本框中保存了上传后工作簿的文件名, 按下“转换到数据库”按钮, 将提交到exceltosql.asp页面处理。

(2) exceltosql.asp页面负责读取Excel工作表的内容, 并写入SQ L Server数据库。实现过程并不复杂, 关键是使用A SP连接上Excel工作簿, 把工作簿文档也当做数据库来访问, 只是连接的代码不同而已。连接Excel工作簿代码如下:

3 ASP实现导出查询数据到Excel工作表

对于一个信息管理系统来说, 数据导入之后, 我们需要查询各种信息, 并且生成报表打印输出。例如手机管理系统中, 手机统计表的格式如图4所示。

A SP的页面中, 查询出来的数据用表格的形式进行布局, 我们可以选定内容复制到Excel表中, 这样比较麻烦。其实, 我们在A SP的查询页面中, 只要加“<%response.C ontent Type="application/vnd.m s-excel"%>”这样一行代码, 就可以把查询的内容输出到Excel表中。

4结语

本文介绍的A SP技术实现Excel数据导入导出数据库的方法, 实现原始数据到网站数据库的自动导入, 避免了大量数据重新输入的问题, 提高了管理人员的工作效率, 查询出来的数据导出到Excel工作表中, 用户可以自己修改报表格式进行输出打印。

参考文献

[1]徐辉.电子商务网站导入Excel数据的设计与实现[J].商场现代化, 2008.10.

[2]郭永亮, 邓强.在JSP中实现查询并导入Excel的通用程序[J].甘肃冶金, 2006.3.

Excel导出 第6篇

实现该功能涉及3个文件:Export Data.aspx、Export Data.aspx.cs及Web.config。采用了Access数据库,名为Customs.mdb,记录在里面的表Showme中。因此需要在Export Data.aspx.cs中引用命名空间:using System.Data.Ole Db。

网页数据导出界面如图1所示。

1 将查询结果显示在Grid View中

1.1 在Web.Config中定义连接串

该定义将在后面的代码中用到。为了方便起见,在实际应用中,可将数据库所在的绝对路径改为相对路径。如果是SQL Server等大型数据库,其连接方式大同小异。

1.2 在Export.aspx.cs中的代码

在页面的Page_Load()事件中,连接数据库后自动执行查询,结果显示在Grid View1控件中:

2 Grid View导出到Excel文件

导出(Export)按钮中的代码,在图1中,如果用户选择了“Excel”,则执行下面的代码。无论是Excel还是Word文件,为避免重复便于区分,其文件名通过获取系统的年月日时分来表示:

3 Grid View导出到Word文件

导出(Export)按钮中的代码,如果用户在下拉列表中选择了“Word”,则执行下面的代码:

4 结语

实现了在ASP.NET中,在客户端将Grid View控件中的数据导出到Word、Excel等常用格式的文件中,便于浏览和打印。在实际应用中,可进一步设置纸张大小、列宽、标题栏等。代码在ASP.NET 2010+Office 2003下调试通过。

摘要:为了克服ASP.NET的GridView控件不能在客户端保存数据的缺陷,利用数据控件与Office软件的接口,实现了导出GridView中的数据到Word、Excel文件。

上一篇:招聘启事下一篇:设备备件的库存准备

全站热搜

    相关推荐