zoukankan      html  css  js  c++  java
  • C# .NET Excel 导入 导出

    1,Excel数据导入

      将Excel作为类似access的数据源

      using System.Data.OleDb;
      using System.IO;

    OpenFileDialog of = new OpenFileDialog();
    of.Title
    = "Excel文件";
    of.FileName
    = "";
    of.InitialDirectory
    = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
    of.Filter
    = "Excel文件(*.xls;*.xlsx)|*.xls;*.xlsx";
    of.ValidateNames
    = true;
    of.CheckFileExists
    = true;
    of.CheckPathExists
    = true;
    string strExcel = "";
    OleDbDataAdapter olda
    = null;
    DataSet ds
    = new DataSet();
    strExcel
    = "select * from [" + sheetNames[0] + "]";
    olda
    = new OleDbDataAdapter(strExcel, strcon);

    olda.Fill(ds,
    "table1");

    List
    <string> columnNames = new List<string>();
    foreach (DataColumn dc in ds.Tables[0].Columns)
    {
    columnNames.Add(dc.ColumnName);
    }
    this.progressBar1.Visible = true;
    this.progressBar1.Maximum = ds.Tables[0].Rows.Count;
    this.progressBar1.Value = 0;
    int count = 0;
    int sum = ds.Tables[0].Rows.Count;
    var nodeTypes
    = nodeManager.NodeTypes;

    foreach (DataRow dr in ds.Tables[0].Rows)
    {

    if(string.IsNullOrEmpty(dr["名称"].ToString().Trim()))
    {
    continue;
    }
    Node node
    = nodeManager.New(nodeTypes[1]) as Node;
    foreach (string name in columnNames)
    {
    if (string.IsNullOrEmpty(name.Trim()))
    {
    continue;
    }
    if (name == "名称")
    {
    node.DisplayName
    = dr[name].ToString().Trim();
    }
    else if (name == "描述")
    {
    node.Description
    = dr[name].ToString().Trim();
    }
    else
    {
    string value = dr[name].ToString().Trim();
    if (!string.IsNullOrEmpty(value))
    {
    if (JackTools.CheckInt(value))
    { node[name]
    = (object)int.Parse(value); }
    else
    if (JackTools.CheckDouble(value))
    { node[name]
    = (object)double.Parse(value); }
    else
    if (JackTools.CheckDatetime(value))
    { node[name]
    = (object)DateTime.Parse(value); }
    else
    if (JackTools.CheckInt(value))
    { node[name]
    = (object)bool.Parse(value); }
    else
    { node[name]
    = value; }
    }
    }
    }
    this.progressBar1.Value++;
    lblInfo.Text
    = (((double)++count / (double)ds.Tables[0].Rows.Count) * 100).ToString("0.00") + "%";
    System.Windows.Forms.Application.DoEvents();
    }

    olcn.Close();
    this.Close();

      

    2,Excel 数据导出 生成Excel 文件

    using System.IO;
    using Excel=Microsoft.offic.interop.Excel
    
    
    //要引用 Microsoft.office.interop.Excel.dll
    
    
        public class ExcelAndNodes
        {
            //导出邮件
            public static void ExportNodesToExcel(string fname,List<Node> list)
            {
                FileInfo file = new FileInfo(fname);
                string path = file.DirectoryName;
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                System.Reflection.Missing miss = System.Reflection.Missing.Value;
                Excel.Application excel = new Excel.Application();
                excel.Application.Workbooks.Add(true);
                excel.Visible = false;//是否显示Excel
                if (excel == null)
                {
                    MessageBox.Show("Excel无法启动!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                Excel.Workbooks books = (Excel.Workbooks)excel.Workbooks;
                Excel.Workbook book = (Excel.Workbook)(books.Add(miss));
                Excel.Worksheet sheet = (Excel.Worksheet)(book.ActiveSheet);
                sheet.Name = "sheet1";
    
                //int m = 0, n = 0;
                int icolumn = 0;//已经有多少列
                //列名称行
                Dictionary<string, int> dic = new Dictionary<string, int>();
                //dic.Add("DisplayName", 1);
                //dic.Add("描述", 2);
                icolumn = 2;
                
                for (int index = 0; index < list.Count; index++)
                {
    
                    excel.Cells[index + 2, 1] = "'" + list[index].DisplayName;
                    excel.Cells[index + 2, 2] = "'" + list[index].Description;
                    //int j = 2;//已经写入几列
                    Hashtable ht = list[index].GetCustomProperties();
                    foreach (DictionaryEntry item in ht)
                    {
                        string name = item.Key.ToString();
                        if (!dic.ContainsKey(name))
                        {
                            dic.Add(name, ++icolumn);
                        }
                        int columnnum = dic[name];
                        excel.Cells[index + 2, columnnum] = "'" + (item.Value as CustomProperty).TypedValue.ToString();
                    }
                }
                //写入列名
                excel.Cells[1, 1] = "'名称";
                excel.Cells[1, 2] = "'描述";
    
    
                foreach (KeyValuePair<string, int> item in dic)
                {
                    excel.Cells[1, item.Value] = "'" + item.Key;
                }
    
                sheet.SaveAs(fname, miss, miss, miss, miss, miss, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, miss, miss, miss);
                book.Close(false, miss, miss);
                books.Close();
                excel.Quit();
                System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(book);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(books);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
                GC.Collect();
    
                MessageBox.Show("数据导出完成!", "系统提示");
                System.Diagnostics.Process.Start(fname);
            }
    
    
        }
    
    
    //
                SaveFileDialog saveFileDialog = new SaveFileDialog();
                saveFileDialog.Filter = "Excel文件类型(*.xls,*.xlsx)|*.xls;*.xlsx";
                if(saveFileDialog.ShowDialog()==DialogResult.OK)
                {
                    string fname = saveFileDialog.FileName;
                    FileInfo file = new FileInfo(fname);
                    string path = file.DirectoryName;
                    if (!Directory.Exists(path))
                    {
                        Directory.CreateDirectory(path);
                    }
                    if (File.Exists(fname))
                    {
                        if (MessageBox.Show("该文件已经存在,是否覆盖?", "系统提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
                        { 
                            //导出文件
                        }
                    }
                }
    

      

  • 相关阅读:
    linux安装jdk
    SAP 性能分析(转载)
    Address already in use
    LadonGo ping批量探测存活主机(任意权限)
    LadonGo ICMP批量探测存活主机
    LadonGo开源全平台内网渗透扫描器框架
    Ladon九种PowerShell命令混淆加密免杀方法
    Ladon免杀/.NET免杀/Exe2Ps1/Ps12Exe/Exe2PowerShell
    Ladon7.5高效率子域名扫描GUI版
    重点核心业务机器及敏感信息
  • 原文地址:https://www.cnblogs.com/netact/p/2120569.html
Copyright © 2011-2022 走看看