lazarus:导出中文内容到excel

引用

uses
  ..., ComObj, ...
// 导出列表
procedure TForm_luru.Button1Click(Sender: TObject);
Var
  sXm1, sDw1, sZhengshuId1: string;
  XLApp: OLEVariant;
  WorkBook: Variant;
  Sheet1: Variant;
  fName: variant;
  dataRange: variant;
  iRow, j: integer;
  s: WideString;
  //fName: string;

begin



 XLApp := CreateOleObject('Excel.Application'); // requires comobj in uses

 try
   XLApp.Visible := true;         // Hide Excel
   XLApp.ScreenUpdating := true;
   XLApp.DisplayAlerts := true;
   fName := ExtractFilePath(ParamStr(0)) + 'muban_out\list.xlt';
   WorkBook := XLApp.Workbooks.Open(fName);     // Open the Workbook
   Sheet1 := XLApp.workBooks[1].WorkSheets[1];

   PBar1.Max := ZROQuery_p_list.RecordCount;
   PBar1.Min := 0;
   PBar1.Position:=0;

   iRow := 1;
   ZROQuery_p_list.First;
   while not ZROQuery_p_list.EOF do
   begin
     PBar1.Position := iRow;
     // 序号
     s := UTF8Decode(intTostr(iRow));
     Sheet1.Cells[iRow + 7, 1].Value := s;
     // 工作单位
     s := UTF8Decode(trim(ZROQuery_p_list.FieldByName('GZDW').AsString));
     Sheet1.Cells[iRow + 7, 2].Value := s;
     // 姓名
     s := UTF8Decode(trim(ZROQuery_p_list.FieldByName('xm').AsString));
     Sheet1.Cells[iRow + 7, 3].Value := s;
     // 性别
     s := UTF8Decode(trim(ZROQuery_p_list.FieldByName('XB').AsString));
     Sheet1.Cells[iRow + 7, 4].Value := s;
     // 出生年月
     s := UTF8Decode(trim(ZROQuery_p_list.FieldByName('CSNY').AsString));
     Sheet1.Cells[iRow + 7, 5].Value := s;
     // 现从事专业
     s := UTF8Decode(trim(ZROQuery_p_list.FieldByName('CSZY').AsString));
     Sheet1.Cells[iRow + 7, 6].Value := s;
     // 原专业技术职务
     s := UTF8Decode(trim(ZROQuery_p_list.FieldByName('YZYJSZW').AsString));
     Sheet1.Cells[iRow + 7, 7].Value := s;
     // 现专业技术职务资格
     s := UTF8Decode(trim(ZROQuery_p_list.FieldByName('XZYJSZW').AsString));
     Sheet1.Cells[iRow + 7, 8].Value := s;
     // 资格证书编号
     s := UTF8Decode(trim(ZROQuery_p_list.FieldByName('ZGZSBH').AsString));
     Sheet1.Cells[iRow + 7, 9].Value := s;
     // 评审时间
     s := UTF8Decode(trim(ZROQuery_p_list.FieldByName('PSTGSJ').AsString));
     Sheet1.Cells[iRow + 7, 10].Value := s;
     // 公布时间
     //s := UTF8Decode(trim(ZROQuery_p_list.FieldByName('xm').AsString));
     s := '';
     Sheet1.Cells[iRow + 7, 11].Value := s;
     // 公布文号
     s := UTF8Decode(trim(ZROQuery_p_list.FieldByName('GBWH').AsString));
     Sheet1.Cells[iRow + 7, 12].Value := s;


     //Sheet1.Rows[iRow + 7].RowHeight := 30;

     iRow := iRow + 1;
     //if iRow > 50 then break;

     ZROQuery_p_list.Next;
   end;

   //dataRange := Sheet1.Range['A' + intToStr(8) + ':L' + intToStr(iRow + 7)];
   s := 'A8:L' + intToStr(iRow + 6);
   dataRange :=  Sheet1.Range[s];
   // 内部水平线型
   dataRange.Borders[11].Linestyle := 6;  // xlContinuous
   // 内部水平线宽
   dataRange.Borders[11].Weight := 2; // 'xlHairline';
   // 内部垂直线型
   dataRange.Borders[12].Linestyle := 6;  // xlContinuous
   // 内部垂直线宽
   dataRange.Borders[12].Weight := 2; //'xlHairline';

   dataRange.Borders[9].Linestyle := 6;   // 最下水平线型
   dataRange.Borders[9].Weight := 2;        // 最下水平线宽
   dataRange.Borders[1].Linestyle := 6; // 左边线型
   dataRange.Borders[1].Weight := 2;      // 左边线宽
   dataRange.Borders[2].Linestyle := 6; // 右边线型
   dataRange.Borders[2].Weight := 2;      // 右边线宽

   //Sheet1.Rows('8:' + intToStr(iRow + 6)).RowHeight := 25;
   // 行高
   s := intToStr(iRow + 6);
   Sheet1.Rows('8:' + s).RowHeight := 25;

   // 查询条件 -----------------------------
   sXm1 := trim(EditXingming.Text);
   sDw1 := trim(EditDanwei.Text);
   sZhengshuId1 := trim(EditZhengshuhao.Text);

   // 姓名
   if sXm1 <> '' then
     s := UTF8Decode('姓名:' + sXm1);
   // 工作单位
   if sDw1 <> '' then
     s := s + UTF8Decode('工作单位:' + sDw1);
   // 资格证书编号
   if sZhengshuId1 <> '' then
     s := s + UTF8Decode('证书编号:' + sZhengshuId1);
   Sheet1.Cells[3, 1].Value := s;
   // 查询条件 ===================================

   // 本表生成时间:
   s := UTF8Decode(dateTimeToStr(now));
   Sheet1.Cells[5, 11].Value := s;

 except
   on E: Exception do
   begin
     //XLApp.Visible := true;
     log('Error: ' + E.Message);
     showmessage(ansiToUtf8('Error: ' + E.Message));
   end;
   //XLApp.Quit;
   //XLAPP := Unassigned;
  end;
 //XLApp.Visible := true;
 PBar1.Position:=0;   

你可能感兴趣的:(Excel,中文,乱码,Lazarus)