• C# winform 导出导入Excel/Doc 完整实例教程[网上看到的]


    还真没做过winform的导出导入,今天上网百度了一下。结果---

    所以还是我自己写个吧。之前做过web的,半搬半做就OK。

    1添加引用:Aspose.Cells.dll(我们就叫工具包吧,可以从网上下载。关于它的操作我在“Aspose.Cells操作说明 中文版 下载 Aspose C# 导出Excel 实例”一文中的说。这里你暂时也可不理会它。)

    Aspose.Cells.dll  和中文说明 下载地址: http://item.taobao.com/auction/item_detail-0db2-f9b1d99e6cb27d78ae9e6373a1529633.htm

    即使没有安装office也能用噢,这是一个好强的大工具。

    2编写Excel操作类

    using System;
    using System.Collections.Generic;
    using System.Text;
    using Aspose.Cells;
    using System.Data;

    public class AsposeExcel
    {

         private string outFileName = "";
         private string fullFilename = "";
         private Workbook book = null;
         private Worksheet sheet = null;


         public AsposeExcel(string outfilename, string tempfilename)//导出构造数
         {
             outFileName = outfilename;
             book = new Workbook();
             // book.Open(tempfilename);这里我们暂时不用模板
             sheet = book.Worksheets[0];
         }
         public AsposeExcel(string fullfilename)//导入构造数
         {
             fullFilename = fullfilename;
             // book = new Workbook();
             //book.Open(tempfilename);
             //sheet = book.Worksheets[0];
         }

         private void AddTitle(string title, int columnCount)
         {
             sheet.Cells.Merge(0, 0, 1, columnCount);
             sheet.Cells.Merge(1, 0, 1, columnCount);

             Cell cell1 = sheet.Cells[0, 0];
             cell1.PutValue(title);
             cell1.Style.HorizontalAlignment = TextAlignmentType.Center;
             cell1.Style.Font.Name = "黑体";
             cell1.Style.Font.Size = 14;
             cell1.Style.Font.IsBold = true;

             Cell cell2 = sheet.Cells[1, 0];
             cell1.PutValue("查询时间:" + DateTime.Now.ToLocalTime());
             cell2.SetStyle(cell1.Style);
         }

         private void AddHeader(DataTable dt)
         {
             Cell cell = null;
             for (int col = 0; col < dt.Columns.Count; col++)
             {
                 cell = sheet.Cells[0, col];
                 cell.PutValue(dt.Columns[col].ColumnName);
                 cell.Style.Font.IsBold = true;
             }
         }

         private void AddBody(DataTable dt)
         {
             for (int r = 0; r < dt.Rows.Count; r++)
             {
                 for (int c = 0; c < dt.Columns.Count; c++)
                 {
                     sheet.Cells[r + 1, c].PutValue(dt.Rows[r][c].ToString());
                 }
             }
         }
         //导出------------下一篇会用到这个方法
         public Boolean DatatableToExcel(DataTable dt)
         {
             Boolean yn = false;
             try
             {
                 //sheet.Name = sheetName;

                 //AddTitle(title, dt.Columns.Count);
                 //AddHeader(dt);
                 AddBody(dt);

                 sheet.AutoFitColumns();
                 //sheet.AutoFitRows();

                 book.Save(outFileName);
                 yn = true;
                 return yn;
             }
             catch (Exception e)
             {
                 return yn;
                 // throw e;
             }
         }

         public DataTable ExcelToDatatalbe()//导入
         {
             Workbook book = new Workbook();
             book.Open(fullFilename);
             Worksheet sheet = book.Worksheets[0];
             Cells cells = sheet.Cells;
             //获取excel中的数据保存到一个datatable中
             DataTable dt_Import = cells.ExportDataTableAsString(0, 0, cells.MaxDataRow + 1, cells.MaxDataColumn + 1, false);
             // dt_Import.
             return dt_Import;
         }
    }

    3导出按钮事件中编写导出数据方法:

    private void bt_excel_out_Click(object sender, EventArgs e)
             {
               
                 SaveFileDialog saveFileDialog1 = new SaveFileDialog();//如果你直接从对话框中拉出来,就不用new了噢。

               //设置文件类型
                 saveFileDialog1.Filter = "导出Excel (*.xls)|*.xls|Word (*.doc)|*.doc";
                 saveFileDialog1.FilterIndex = 2;
                 saveFileDialog1.RestoreDirectory = true;
                 saveFileDialog1.CreatePrompt = true;
                 saveFileDialog1.Title = "导出文件保存路径";
                 //saveFileDialog1.ShowDialog();
                 //string strName = saveFileDialog1.FileName;

                 //设置默认文件类型显示顺序    
                 //saveFileDialog1.FilterIndex = 2; 

                 //保存对话框是否记忆上次打开的目录    
                 saveFileDialog1.RestoreDirectory = true;

                 //点了保存按钮进入    
                 if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                 {
                     //获得文件路径    
                     string localFilePath = saveFileDialog1.FileName.ToString();

                     //获取文件名,不带路径    
                     string fileNameExt = localFilePath.Substring(localFilePath.LastIndexOf("\") + 1);

                     //获取文件路径,不带文件名    
                     string FilePath = localFilePath.Substring(0, localFilePath.LastIndexOf("\"));

                     //给文件名前加上时间    
                     string newFileName = DateTime.Now.ToString("yyyyMMdd") + fileNameExt;


                     saveFileDialog1.FileName = FilePath + "\" + newFileName;
                     System.IO.FileStream fs = (System.IO.FileStream)saveFileDialog1.OpenFile();//输出文件 

                     //下面是导出数据到doc        导出到excel请看下一篇(发现没有AsposeExcel
    类还没有用到呢,那正是导出到excel要用的)
                     StreamWriter writer = new StreamWriter(fs);
                     writer.Write("tttt");//这里就是你要导出到word文档的数据
                     writer.Flush();
                     writer.Close();
                     fs.Close();


                 }


             }

  • 相关阅读:
    centos 7 配置 keepalived,主机高可用
    centos 7 安装 nginx
    windows10 设置虚拟网卡/ip
    c#程序以管理员权限运行
    关于js中属性那些事
    centos 7 问题集锦
    几个Git仓库开源软件的比较
    grpc proto3 初体验
    windows下maven安装配置(本地仓库配置)
    navicat premium patch/keygen instruction
  • 原文地址:https://www.cnblogs.com/rr163/p/3979409.html
Copyright © 2020-2023  润新知