Delphi - cxGrid内容xlsx、xls、csv格式导出
<p><em><strong>.xls格式导出,uses中添加cxGridExportLink</strong></em></p><p>代码如下:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 255, 1)">function</span> SaveToExcel(gridMain: TcxGrid; FileName: <span style="color: rgba(0, 0, 255, 1)">string</span>): <span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 255, 1)">var</span>
<span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 0, 1)"> SaveFileDialog: TSaveDialog;
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">示例:SaveToExcel(dxDBGrid1,'默认文件名');</span>
<span style="color: rgba(0, 128, 128, 1)"> 6</span> SaveFileDialog := TSaveDialog.<span style="color: rgba(0, 0, 255, 1)">Create</span>(<span style="color: rgba(0, 0, 255, 1)">nil</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> SaveFileDialog.FileName :=<span style="color: rgba(0, 0, 0, 1)"> FileName;
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> SaveFileDialog.Filter := <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">*.xls</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 0, 255, 1)">if</span> SaveFileDialog.Execute <span style="color: rgba(0, 0, 255, 1)">then</span>
<span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)">11</span> <span style="color: rgba(0, 0, 255, 1)">if</span> pos(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">.XLS</span><span style="color: rgba(128, 0, 0, 1)">'</span>, UpperCase(SaveFileDialog.FileName)) <= <span style="color: rgba(128, 0, 128, 1)">0</span> <span style="color: rgba(0, 0, 255, 1)">then</span>
<span style="color: rgba(0, 128, 128, 1)">12</span> SaveFileDialog.FileName := SaveFileDialog.FileName + <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">.XLS</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">13</span> <span style="color: rgba(0, 0, 0, 1)"> ExportGridToExcel(SaveFileDialog.FileName, gridMain);
</span><span style="color: rgba(0, 128, 128, 1)">14</span> ShowMessage(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">数据已成功导出到您指定的目录中</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">16</span> Result :=<span style="color: rgba(0, 0, 0, 1)"> SaveFileDialog.FileName;
</span><span style="color: rgba(0, 128, 128, 1)">17</span> <span style="color: rgba(0, 0, 0, 1)"> SaveFileDialog.Free;
</span><span style="color: rgba(0, 128, 128, 1)">18</span> <span style="color: rgba(0, 0, 255, 1)">end</span>;</pre>
</div>
<p><em><strong>.csv格式导出,uses中添加cxGridExportLink</strong></em></p>
<p>代码如下:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)">2</span> Screen.Cursor :=<span style="color: rgba(0, 0, 0, 1)"> crSQLWait;
</span><span style="color: rgba(0, 128, 128, 1)">3</span> FileNameCache := FileName + FormatDateTime(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">YYYYMMDD</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">, NOW);
</span><span style="color: rgba(0, 128, 128, 1)">4</span> FileName := FileNameCache + <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">.CSV</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">5</span> FilePathCache := <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">C:/TMP/</span><span style="color: rgba(128, 0, 0, 1)">'</span> +<span style="color: rgba(0, 0, 0, 1)"> FileNameCache;
</span><span style="color: rgba(0, 128, 128, 1)">6</span> FilePath := FilePathCache + <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">.CSV</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">7</span> ExportGridToText(FilePathCache + <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">.XLS</span><span style="color: rgba(128, 0, 0, 1)">'</span>, cxGrid_M, True, True, <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">,</span><span style="color: rgba(128, 0, 0, 1)">'</span>, <span style="color: rgba(128, 0, 0, 1)">''</span>, <span style="color: rgba(128, 0, 0, 1)">''</span>, <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">CSV</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">8</span> Screen.Cursor :=<span style="color: rgba(0, 0, 0, 1)"> crDefault;
</span><span style="color: rgba(0, 128, 128, 1)">9</span> <span style="color: rgba(0, 0, 255, 1)">end</span>;</pre>
</div>
<p> </p>
<p><em><strong>.xlsx格式无法通过cxGrid现有封装的方法实现,可以通过.xls/.csv格式转换成.xlsx格式。</strong></em></p>
<p>代码如下:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 255, 1)">procedure</span> Saveto_xlsx(tn: <span style="color: rgba(0, 0, 255, 1)">string</span>; fn: <span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 255, 1)">var</span>
<span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 0, 1)"> ExcelApp, Excelbook, ExcelChart: OleVariant;
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">tn:需要转换格式的源文件路径</span>
<span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">fn:转换之后的文件存储路径</span>
<span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 255, 1)">begin</span>
<span style="color: rgba(0, 128, 128, 1)"> 7</span> <span style="color: rgba(0, 0, 255, 1)">try</span>
<span style="color: rgba(0, 128, 128, 1)"> 8</span> ExcelApp := CreateOleObject(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Excel.Application</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> ExcelApp.Visible := True;<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">False</span>
<span style="color: rgba(0, 128, 128, 1)">10</span> ExcelApp.Caption := <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">应用程序调用 Microsoft Excel</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">11</span> ExcelApp.Application.DisplayAlerts :=<span style="color: rgba(0, 0, 0, 1)"> False;
</span><span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 0, 0, 1)"> ExcelApp.WorkBooks.Open(tn);
</span><span style="color: rgba(0, 128, 128, 1)">13</span> ExcelApp.ActiveWorkbook.SaveAs(fn, <span style="color: rgba(128, 0, 128, 1)">51</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">14</span> <span style="color: rgba(0, 0, 0, 1)"> ExcelApp.Application.Quit;
</span><span style="color: rgba(0, 128, 128, 1)">15</span> ExcelApp.Application.DisplayAlerts :=<span style="color: rgba(0, 0, 0, 1)"> True;
</span><span style="color: rgba(0, 128, 128, 1)">16</span> Excelapp :=<span style="color: rgba(0, 0, 0, 1)"> Null;
</span><span style="color: rgba(0, 128, 128, 1)">17</span> <span style="color: rgba(0, 0, 255, 1)">except</span>
<span style="color: rgba(0, 128, 128, 1)">18</span> Application.Messagebox(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Excel 没有安装!</span><span style="color: rgba(128, 0, 0, 1)">'</span>, <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Hello</span><span style="color: rgba(128, 0, 0, 1)">'</span>, MB_ICONERROR +<span style="color: rgba(0, 0, 0, 1)"> mb_Ok);
</span><span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 0, 0, 1)"> Abort;
</span><span style="color: rgba(0, 128, 128, 1)">20</span> <span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">21</span> <span style="color: rgba(0, 0, 255, 1)">end</span>;</pre>
</div>
<p> </p>
<div id="AllanboltSignature">
<p id="PSignature" style="padding: 10px 10px 10px 60px; background: url("https://images.cnblogs.com/cnblogs_com/jeremywucnblog/1607637/o_191206011825obs.png") 1% no-repeat rgba(229, 241, 244, 1); font-family: 微软雅黑; font-size: 11px; border: 1px dashed rgba(224, 224, 224, 1)"> 作者:Jeremy.Wu <br> 出处:https://www.cnblogs.com/jeremywucnblog/
<br> 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
</p>
</div><br><br>
来源:https://www.cnblogs.com/jeremywucnblog/p/11422905.html
頁:
[1]