编程论坛's Archiver

volte 发表于 2006-6-17 11:10

[转载]解决读取excel问题 (很多人求助excel导入sql)

使用动态创建的方法<BR><BR>首先创建 Excel 对象,使用ComObj:<BR>var ExcelApp: Variant;<BR>ExcelApp := CreateOleObject( 'Excel.Application' );<BR><BR>1) 显示当前窗口:<BR>ExcelApp.Visible := True;<BR><BR>2) 更改 Excel 标题栏:<BR>ExcelApp.Caption := '应用程序调用 Microsoft Excel';<BR><BR>3) 添加新工作簿:<BR>ExcelApp.WorkBooks.Add;<BR><BR>4) 打开已存在的工作簿:<BR>ExcelApp.WorkBooks.Open( 'C:\Excel\Demo.xls' );<BR><BR>5) 设置第2个工作表为活动工作表:<BR>ExcelApp.WorkSheets[2].Activate; <BR>或 <BR>ExcelApp.WorksSheets[ 'Sheet2' ].Activate;<BR><BR>6) 给单元格赋值:<BR>ExcelApp.Cells[1,4].Value := '第一行第四列';<BR><BR>7) 设置指定列的宽度(单位:字符个数),以第一列为例:<BR>ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 5;<BR><BR>8) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:<BR>ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米<BR><BR>9) 在第8行之前插入分页符:<BR>ExcelApp.WorkSheets[1].Rows.PageBreak := 1;<BR><BR>10) 在第8列之前删除分页符:<BR>ExcelApp.ActiveSheet.Columns[4].PageBreak := 0;<BR><BR>11) 指定边框线宽度:<BR>ExcelApp.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3;<BR>1-左 2-右 3-顶 4-底 5-斜( \ ) 6-斜( / )<BR><BR>12) 清除第一行第四列单元格公式:<BR>ExcelApp.ActiveSheet.Cells[1,4].ClearContents;<BR><BR>13) 设置第一行字体属性:<BR>ExcelApp.ActiveSheet.Rows[1].Font.Name := '隶书';<BR>ExcelApp.ActiveSheet.Rows[1].Font.Color := clBlue;<BR>ExcelApp.ActiveSheet.Rows[1].Font.Bold := True;<BR>ExcelApp.ActiveSheet.Rows[1].Font.UnderLine := True;<BR><BR>14) 进行页面设置:<BR><BR>a.页眉:<BR>ExcelApp.ActiveSheet.PageSetup.CenterHeader := '报表演示';<BR>b.页脚:<BR>ExcelApp.ActiveSheet.PageSetup.CenterFooter := '第&amp;P页';<BR>c.页眉到顶端边距2cm:<BR>ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;<BR>d.页脚到底端边距3cm:<BR>ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;<BR>e.顶边距2cm:<BR>ExcelApp.ActiveSheet.PageSetup.TopMargin := 2/0.035;<BR>f.底边距2cm:<BR>ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2/0.035;<BR>g.左边距2cm:<BR>ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2/0.035;<BR>h.右边距2cm:<BR>ExcelApp.ActiveSheet.PageSetup.RightMargin := 2/0.035;<BR>i.页面水平居中:<BR>ExcelApp.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;<BR>j.页面垂直居中:<BR>ExcelApp.ActiveSheet.PageSetup.CenterVertically := 2/0.035;<BR>k.打印单元格网线:<BR>ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True;<BR><BR>15) 拷贝操作:<BR><BR>a.拷贝整个工作表:<BR>ExcelApp.ActiveSheet.Used.Range.Copy;<BR>b.拷贝指定区域:<BR>ExcelApp.ActiveSheet.Range[ 'A1:E2' ].Copy;<BR>c.从A1位置开始粘贴:<BR>ExcelApp.ActiveSheet.Range.[ 'A1' ].PasteSpecial;<BR>d.从文件尾部开始粘贴:<BR>ExcelApp.ActiveSheet.Range.PasteSpecial;<BR><BR>16) 插入一行或一列:<BR>a. ExcelApp.ActiveSheet.Rows[2].Insert;<BR>b. ExcelApp.ActiveSheet.Columns[1].Insert;<BR><BR>17) 删除一行或一列:<BR>a. ExcelApp.ActiveSheet.Rows[2].Delete;<BR>b. ExcelApp.ActiveSheet.Columns[1].Delete;<BR><BR>18) 打印预览工作表:<BR>ExcelApp.ActiveSheet.PrintPreview;<BR><BR>19) 打印输出工作表:<BR>ExcelApp.ActiveSheet.PrintOut;<BR><BR>20) 工作表保存:<BR>if not ExcelApp.ActiveWorkBook.Saved then<BR>ExcelApp.ActiveSheet.PrintPreview;<BR><BR>21) 工作表另存为:<BR>ExcelApp.SaveAs( 'C:\Excel\Demo1.xls' );<BR><BR>22) 放弃存盘:<BR>ExcelApp.ActiveWorkBook.Saved := True;<BR><BR>23) 关闭工作簿:<BR>ExcelApp.WorkBooks.Close;<BR><BR>24) 退出 Excel:<BR>ExcelApp.Quit;<BR><BR>(二) 使用Delphi 控件方法<BR>在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。 <BR><BR>1) 打开Excel <BR>ExcelApplication1.Connect;<BR><BR>2) 显示当前窗口:<BR>ExcelApplication1.Visible[0]:=True;<BR><BR>3) 更改 Excel 标题栏:<BR>ExcelApplication1.Caption := '应用程序调用 Microsoft Excel';<BR><BR>4) 添加新工作簿:<BR>ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));<BR><BR>5) 添加新工作表:<BR>var Temp_Worksheet: _WorkSheet;<BR>begin<BR>Temp_Worksheet:=ExcelWorkbook1.<BR>WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet;<BR>ExcelWorkSheet1.ConnectTo(Temp_WorkSheet);<BR>End;<BR><BR>6) 打开已存在的工作簿:<BR>ExcelApplication1.Workbooks.Open (c:\a.xls<BR>EmptyParam,EmptyParam,EmptyParam,EmptyParam,<BR>EmptyParam,EmptyParam,EmptyParam,EmptyParam,<BR>EmptyParam,EmptyParam,EmptyParam,EmptyParam,0)<BR><BR>7) 设置第2个工作表为活动工作表:<BR>ExcelApplication1.WorkSheets[2].Activate; 或<BR>ExcelApplication1.WorksSheets[ 'Sheet2' ].Activate;<BR><BR>8) 给单元格赋值:<BR>ExcelApplication1.Cells[1,4].Value := '第一行第四列';<BR><BR>9) 设置指定列的宽度(单位:字符个数),以第一列为例:<BR>ExcelApplication1.ActiveSheet.Columns[1].ColumnsWidth := 5;<BR><BR>10) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:<BR>ExcelApplication1.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米<BR><BR>11) 在第8行之前插入分页符:<BR>ExcelApplication1.WorkSheets[1].Rows.PageBreak := 1;<BR><BR>12) 在第8列之前删除分页符:<BR>ExcelApplication1.ActiveSheet.Columns[4].PageBreak := 0;<BR><BR>13) 指定边框线宽度:<BR>ExcelApplication1.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3;<BR>1-左 2-右 3-顶 4-底 5-斜( \ ) 6-斜( / )<BR><BR>14) 清除第一行第四列单元格公式:<BR>ExcelApplication1.ActiveSheet.Cells[1,4].ClearContents;<BR><BR>15) 设置第一行字体属性:<BR>ExcelApplication1.ActiveSheet.Rows[1].Font.Name := '隶书';<BR>ExcelApplication1.ActiveSheet.Rows[1].Font.Color := clBlue;<BR>ExcelApplication1.ActiveSheet.Rows[1].Font.Bold := True;<BR>ExcelApplication1.ActiveSheet.Rows[1].Font.UnderLine := True;<BR><BR>16) 进行页面设置:<BR>a.页眉:<BR>ExcelApplication1.ActiveSheet.PageSetup.CenterHeader := '报表演示';<BR>b.页脚:<BR>ExcelApplication1.ActiveSheet.PageSetup.CenterFooter := '第&amp;P页';<BR>c.页眉到顶端边距2cm:<BR>ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;<BR>d.页脚到底端边距3cm:<BR>ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;<BR>e.顶边距2cm:<BR>ExcelApplication1.ActiveSheet.PageSetup.TopMargin := 2/0.035;<BR>f.底边距2cm:<BR>ExcelApplication1.ActiveSheet.PageSetup.BottomMargin := 2/0.035;<BR>g.左边距2cm:<BR>ExcelApplication1.ActiveSheet.PageSetup.LeftMargin := 2/0.035;<BR>h.右边距2cm:<BR>ExcelApplication1.ActiveSheet.PageSetup.RightMargin := 2/0.035;<BR>i.页面水平居中:<BR>ExcelApplication1.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;<BR>j.页面垂直居中:<BR>ExcelApplication1.ActiveSheet.PageSetup.CenterVertically := 2/0.035;<BR>k.打印单元格网线:<BR>ExcelApplication1.ActiveSheet.PageSetup.PrintGridLines := True;<BR><BR>17) 拷贝操作:<BR><BR>a.拷贝整个工作表:<BR>ExcelApplication1.ActiveSheet.Used.Range.Copy;<BR><BR>b.拷贝指定区域:<BR>ExcelApplication1.ActiveSheet.Range[ 'A1:E2' ].Copy;<BR><BR>c.从A1位置开始粘贴:<BR>ExcelApplication1.ActiveSheet.Range.[ 'A1' ].PasteSpecial;<BR><BR>d.从文件尾部开始粘贴:<BR>ExcelApplication1.ActiveSheet.Range.PasteSpecial;<BR><BR>18) 插入一行或一列:<BR>a. ExcelApplication1.ActiveSheet.Rows[2].Insert;<BR>b. ExcelApplication1.ActiveSheet.Columns[1].Insert;<BR><BR>19) 删除一行或一列:<BR>a. ExcelApplication1.ActiveSheet.Rows[2].Delete;<BR>b. ExcelApplication1.ActiveSheet.Columns[1].Delete;<BR><BR>20) 打印预览工作表:<BR>ExcelApplication1.ActiveSheet.PrintPreview;<BR><BR>21) 打印输出工作表:<BR>ExcelApplication1.ActiveSheet.PrintOut;<BR><BR>22) 工作表保存:<BR>if not ExcelApplication1.ActiveWorkBook.Saved then<BR>ExcelApplication1.ActiveSheet.PrintPreview;<BR><BR>23) 工作表另存为:<BR>ExcelApplication1.SaveAs( 'C:\Excel\Demo1.xls' );<BR><BR>24) 放弃存盘:<BR>ExcelApplication1.ActiveWorkBook.Saved := True;<BR><BR>25) 关闭工作簿:<BR>ExcelApplication1.WorkBooks.Close;<BR><BR>26) 退出 Excel:<BR>ExcelApplication1.Quit;<BR>ExcelApplication1.Disconnect;<BR><BR>(三) 使用Delphi 控制Excle二维图<BR>在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet<BR>var asheet1,achart, range:variant;<BR><BR>1)选择当第一个工作薄第一个工作表<BR>asheet1:=ExcelApplication1.Workbooks[1].Worksheets[1];<BR><BR>2)增加一个二维图<BR>achart:=asheet1.chartobjects.add(100,100,200,200);<BR><BR>3)选择二维图的形态<BR>achart.chart.charttype:=4;<BR><BR>4)给二维图赋值<BR>series:=achart.chart.seriescollection;<BR>range:=sheet1!r2c3:r3c9;<BR>series.add(range,true);<BR><BR>5)加上二维图的标题<BR>achart.Chart.HasTitle:=True;<BR>achart.Chart.ChartTitle.Characters.Text:=’ Excle二维图’ <BR><BR><BR><BR>原作者: shadowkiss | 傲气)(^中华^ <BR>来 源: www.csdn.net <BR><BR><BR>希望大家好好研究,我已经在delphi环境下实现了.

flatter 发表于 2006-6-19 15:34

<P>太复杂了,看了也不会,不过顶。版主辛苦了</P>

北方的老狼 发表于 2006-6-19 16:26

<P>使用ACCESS  更方便..<BR>直接打印报表<BR>如何?<BR>不使用语句<BR>直接使用报表设计..........<BR>[em13][em13][em13][em13][em13]</P>

averting 发表于 2006-6-30 10:30

请问用的什么编程语言?VB,OR NET?代码写哪[em13]

szyyx 发表于 2006-7-7 00:27

有用vb.net写的代码吗?

volte 发表于 2006-7-9 20:40

<P>这是delphi 中用到的。<BR><BR>使用com对象接口实现的。</P>

homilulu 发表于 2006-8-4 17:37

我还不太会看..不过慢慢就会了..先顶上来在说..

偷着乐 发表于 2006-8-17 12:15

支持版主....好细哦.......<BR>弄个简约的吧

hq_8683 发表于 2006-8-17 13:36

<P>我正需要这个,顶了!!!</P>

duyong007 发表于 2006-8-21 08:35

<P>好东西阿<BR>顶......</P>

fuhuijun 发表于 2008-4-28 19:43

看了一下,好东西顶了

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.