zoukankan      html  css  js  c++  java
  • C#数据导出到Excel的方法

    参考:

    Visual Studio 进行Excel相关开发,Microsoft.Office.Interop.Excel.dll库
    https://www.cnblogs.com/arxive/p/5786241.html


    说明:

    Microsoft.Office.Interop.Excel.dll 在VS中已自带,不需要再在网上下载。
    引用方法:引用--扩展集,VS已自带Excel的dll库。
    路径参考如下:D:Program Files (x86)Microsoft Visual Studio 12.0Visual Studio Tools for OfficePIAOffice14Microsoft.Office.Interop.Excel.dll)


    导出到Excel的方法:---测试ok!

    private void ExportExcel(DataTable dt)
    {
    if (null == dt || dt.Rows.Count <= 0) return;

    string savePath = string.Empty;
    FolderBrowserDialog dialog = new FolderBrowserDialog();
    dialog.Description = "请选择保存路径";
    //dialog.RootFolder = Environment.SpecialFolder.Desktop;
    if (dialog.ShowDialog() == DialogResult.OK)
    {
    savePath = dialog.SelectedPath + "\" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
    }
    else
    {
    return;
    }

    //需要添加 Microsoft.Office.Interop.Excel引用
    Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
    if (null == app)
    {
    MessageBox.Show("缺少Excel组件!");
    return;
    }

    app.Visible = false;
    app.UserControl = true;

    Microsoft.Office.Interop.Excel.Workbook workbook = app.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
    Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];
    worksheet.Name = "商品数据"; // 修改sheet名称
    //Microsoft.Office.Interop.Excel.Range range;
    //long totalCount = dt.Rows.Count;
    //long rowRead = 0;
    //float percent = 0; // 导出进度

    // 保存列名,Excel的索引从1开始
    for (int i = 0; i < dt.Columns.Count; i++)
    {
    worksheet.Cells[1, i + 1] = dt.Columns[i].ColumnName;
    // 标题设置
    //range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, i + 1];
    //range.Interior.ColorIndex = 15; // 背景色
    //range.Font.Bold = true; // 粗体
    }
    // 保存数据
    for (int r = 0; r < dt.Rows.Count; r++)
    {
    for (int i = 0; i < dt.Columns.Count; i++)
    {
    worksheet.Cells[r + 2, i + 1] = dt.Rows[r][i].ToString();
    }
    //rowRead++;
    //percent = ((float)(100 * rowRead)) / totalCount; // 当前进度
    }

    // 合计:
    //worksheet.Cells[DT.Rows.Count + 2, 1] = "合计";
    //worksheet.Cells[DT.Rows.Count + 2, 4] = DT.Compute("sum(Quantity)", ""); // DataTable筛选条件
    //worksheet.Cells[DT.Rows.Count + 2, 6] = DT.Compute("sum(TotalAmt)", "");

    //调整Excel的样式。
    //Microsoft.Office.Interop.Excel.Range rg = worksheet.Cells.get_Range("A3", worksheet.Cells[rowCount + 2, 32]);
    //rg.Borders.LineStyle = 1; //单元格加边框
    //worksheet.Columns.AutoFit(); //自动调整列宽

    //隐藏某一行
    //选中部分单元格,把选中的单元格所在的行的Hidden属性设为true
    //worksheet.get_Range(app.Cells[2, 1], app.Cells[2, 32]).EntireRow.Hidden = true;

    //删除某一行
    // worksheet.get_Range(app.Cells[2, 1], app.Cells[2, 32]).EntireRow.Delete(Microsoft.Office.Interop.Excel.XlDirection.xlUp);

    //string savePath = "导出数据.xls";
    //string savePath = System.Windows.Forms.Application.StartupPath + "\"+DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";

    workbook.SaveAs(savePath);

    // 释放资源
    workbook.Close();
    workbook = null;
    app.Quit();
    app = null;

    MessageBox.Show("导出数据成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }

  • 相关阅读:
    UART中的硬件流控RTS与CTS
    Yii smsto短信接口的函数
    分布式选主 利用Mysql ACID和Lease协议实现选主和高可用
    Extjs GridPanel 合计功能 解决滚动条滚动问题和页面刷新滚动条回到初始位置问题。
    基于ARM+LINUX的无线视频采集系统设计搭建嵌入式web服务器
    C++里父类的析构函数为什么声明为virtual
    重量过载 = 重载
    Spread Studio中文支持图解
    Android用户如何FQ访问被封锁的媒体资源
    将myeclipse 10.x以下版本web project的导入到myeclipse blue 2013 部署没有项目名
  • 原文地址:https://www.cnblogs.com/dblg/p/11401243.html
Copyright © 2011-2022 走看看