Delphi 转EXCEL 合并单元格解决方案

废话少说先上传代码,自己看吧!

procedure TForm1.Button10Click(Sender: TObject);

var

FExcel:Variant;

FWorkbook:Variant;

FWorkSheet:Variant;

XlsFileName:String;

i,j:Integer;

Field1,field2,Field3,Field4:string;

LastField1,LastField2,Lastfield3,LastField4:string;

savedailog:TSaveDialog;

begin

savedailog:=TSaveDialog.Create(Self);

savedailog.Filter:=‘Excel files (*.xls)|*.XlS‘;

if savedailog.Execute then begin

xlsfilename:=savedailog.FileName;

savedailog.Free;

end

else begin

savedailog.Free;

exit;

end;

screen.Cursor := crHourGlass;

Try

FExcel := CreateOleObject(‘Excel.application‘);

except

screen.Cursor:=crDefault;

ShowMessage(‘出错!没有安装Excel软件!‘);

exit;

end;

FExcel.DisplayAlerts :=false ; //不提示弹出对话框

try

FWorkbook :=FExcel.WorkBooks.Add;

DM.Q_FindProcess.First;

LastField1:=‘‘;

LastField2:=‘‘;

Lastfield3:=‘‘;

Lastfield4:=‘‘;

if DM.Q_FindProcess.RecordCount >0 then begin

//添加表头

j:=1;

FExcel.cells[j,1]:=‘项目名称‘;

FExcel.cells[j,2]:=‘产品名称‘;

FExcel.cells[j,3]:=‘模具‘;

FExcel.cells[j,4]:=‘节点‘;

FExcel.cells[j,5]:=‘序号‘;

FExcel.cells[j,6]:=‘事项内容‘;

FExcel.cells[j,7]:=‘计划日期‘;

FExcel.cells[j,8]:=‘实际日期‘;

FExcel.cells[j,9]:=‘状态‘;

FExcel.cells[j,10]:=‘备注‘;

FExcel.cells[j,11]:=‘类型‘;

//添加表身

for i:=1 to DM.Q_FindProcess.RecordCount do begin

j:=i+1;

Field1:=DM.Q_FindProcessMainProjectName.AsString;

field2:=DM.Q_FindProcessSubProjectName.AsString;

field3:=DM.Q_FindProcessMouldName.AsString;

field4:=DM.Q_FindProcessProjectStatusName.AsString;

try

FExcel.cells[j,1]:=DM.Q_FindProcessMainProjectName.AsString;

FExcel.cells[j,2]:=DM.Q_FindProcessSubProjectName.AsString;

FExcel.cells[j,3]:=DM.Q_FindProcessMouldName.AsString;

FExcel.cells[j,4]:=DM.Q_FindProcessProjectStatusName.AsString;

FExcel.cells[j,5]:=DM.Q_FindProcessSeq.AsString;

FExcel.cells[j,6]:=DM.Q_FindProcessWorkContent.AsString;

FExcel.cells[j,7]:=DM.Q_FindProcessPlanDatePoint.AsString;

FExcel.cells[j,8]:=DM.Q_FindProcessActDatePoint.AsString;

FExcel.cells[j,9]:=DM.Q_FindProcessSubStatus.AsString;

FExcel.cells[j,10]:=DM.Q_FindProcessRemark.AsString;

FExcel.cells[j,11]:=DM.Q_FindProcessSubProjectType.AsString;

if Field1 = LastField1 then

FExcel.Range[FExcel.Cells[j-1,1],FExcel.Cells[j,1]].MergeCells:=True;

if Field2 = LastField2 then

FExcel.Range[FExcel.Cells[j-1,2],FExcel.Cells[j,2]].MergeCells:=True;

if Field3 = LastField3 then

FExcel.Range[FExcel.Cells[j-1,3],FExcel.Cells[j,3]].MergeCells:=True;

if Field4 = LastField4 then

FExcel.Range[FExcel.Cells[j-1,4],FExcel.Cells[j,4]].MergeCells:=True;

LastField1 := Field1;

LastField2 := Field2;

LastField3 := Field3;

LastField4 := Field4;

finally

FExcel.Visible := true;

Screen.Cursor := crDefault;

end;

DM.Q_FindProcess.Next;

end;

end;

FWorkSheet.saveas(xlsfilename);

FExcel.quit;

ShowMessage(‘输出 Excel 文件已完成。。。‘);

Except

ShowMessage(‘出错!输出文件错误!‘);

FWorkBook.Close;

FExcel.Quit;

Exit;

end;

end;

时间: 2024-11-04 17:20:56

Delphi 转EXCEL 合并单元格解决方案的相关文章

[办公应用]如何将excel合并单元格分拆后每个单元格上仍保留数据?

合并单元格虽然美观,但是无法进行排序.筛选等操作. 只有合并单元格拆分后才可以按常规进行统计.但是普通拆分后,excel仅保留合并单元格数据到区域左上角的单元格. 解决方案:选定多个合并单元格,应用本宏即可每个单元格均保留数据:Sub 拆分() Dim c As Range For Each c In ActiveSheet.UsedRange.Cells If c.MergeCells Then c.Select c.UnMerge Selection.Value = c.Value End

NPOI之Excel——合并单元格、设置样式、输入公式

首先建立一个空白的工作簿用作测试,并在其中建立空白工作表,在表中建立空白行,在行中建立单元格,并填入内容: //建立空白工作簿 IWorkbook workbook = new HSSFWorkbook(); //在工作簿中:建立空白工作表 ISheet sheet = workbook.CreateSheet(); //在工作表中:建立行,参数为行号,从0计 IRow row = sheet.CreateRow(0); //在行中:建立单元格,参数为列号,从0计 ICell cell = ro

Java导出Excel合并单元格

1.问题背景 利用POI导出Excel表格,在导出的过程中涉及到双表头,即需要合并单元格 2.实现源码 /** * * @Project:Report * @Title:MergeCell.java * @Package:com.you.excel * @Description: * @Author:YouHaiDong * @Date:2015年11月4日 下午2:36:46 * @Version: */ package com.you.excel; import java.io.FileOu

【NetOffice Excel】Excel合并单元格【原】

CSharp操作Excel采用开源的原生.NET程序集NetOffice,格式兼容性更好. 在操作Excel的时候有时候需要合并单元格 using ExcelOffice = NetOffice.ExcelApi; using OfficeApi = NetOffice.OfficeApi; //申请一个变量 private ExcelOffice.Application excelApp; //在一个方法中定义如下 excelApp = new ExcelOffice.Application(

java动态导出excel合并单元格

采用的是poi技术 框架式  ssh 使用的是struts1 public void outExcel(ActionMapping mapping, ActionForm form,   HttpServletRequest request, HttpServletResponse response) {   你程序需要调用的东西写在这里 try { // 第一步,创建一个webbook,对应一个Excel文件 HSSFWorkbook wb = new HSSFWorkbook(); // 第

excel 合并 单元格内容

刚刚有人问怎么合并单元格内容,正好excel 我也不会,顺便查查记录一下 1.假设有两个单元格如下:           单元格1 单元格2           2. 在一个空白单元格输入 =( 这代表一个公式的开头. 如下:           =(             3. 在第二步输入完成后用鼠标点击单元格1, 这时候 = ( 后面会出现第一个单元格的坐标. 紧接着你输入 &" "& , 注意双引号中间有空格. 然后再点击单元格2, 这时候单元格2的坐标也输入

poi导出excel合并单元格(包括列合并、行合并)

1 工程所需jar包如下:commons-codec-1.5.jarcommons-logging-1.1.jarlog4j-1.2.13.jarjunit-3.8.1.jarpoi-3.9-20121203.jar 2 Code: /** * 导出设备信息Excel * @param form 和 HTTP 请求相关的表格对象 * @param resources 信息资源对象 * @param locale 本地化对象 * @param session HTTP 会话对象 * @param

让我头疼一下午的Excel合并单元格

Excel导出常见问题 excel导出其实不算什么难事 在网上copy下模板代码,填充自己的业务数据,提供一个http接口基本就可以得到你要导出的数据了. 但是,凡事都有例外,截止今天,excel导出我遇到的主要是两大类问题 1.大数据量的excel数据,比如几十万条甚至更多的数据导出 2.因为excel中内容的问题,导致导出后的excel不能直接打开,报错"由于一些内容不可取,Excel无法打开xxx.xlsx.是否要打开并修复此工作簿?" 针对第一种大数据量问题,我遇到的主要问题是

NPOI之Excel——合并单元格、设置样式、输入公式、设置筛选等

首先建立一个空白的工作簿用作测试,并在其中建立空白工作表,在表中建立空白行,在行中建立单元格,并填入内容: //建立空白工作簿 IWorkbook workbook = new HSSFWorkbook(); //在工作簿中:建立空白工作表 ISheet sheet = workbook.CreateSheet(); //在工作表中:建立行,参数为行号,从0计 IRow row = sheet.CreateRow(0); //在行中:建立单元格,参数为列号,从0计 ICell cell = ro