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

      这种方法要求使用者的电脑上必须有Excel,服务器上也必须有Excel,这样很不好,所以不推荐这种方法,推荐使用NPOI的方式,见我的另一篇博客

      写一个简单的例子,然后大家自己根据实际情况自由发挥

      代码:

                string fileName = "模板";
    
                string saveFileName = "我的模板";
    
                SaveFileDialog saveDialog = new SaveFileDialog();
    
                saveDialog.DefaultExt = "xls";
    
                saveDialog.Filter = "Excel文件|*.xls";
    
                saveDialog.FileName = fileName;
    
                saveDialog.ShowDialog();
    
                saveFileName = saveDialog.FileName; 
    
                if (saveFileName.IndexOf(":") < 0) return; //被点了取消就ruturn
    
                Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
    
                if (xlApp == null)
    
                {
    
                    MessageBox.Show("无法创建Excel对象,您的电脑可能未安装Excel");
    
                    return;
    
                }
    
                Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
    
                Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
    
                Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1 
                //上面的这三个东东,workbooks是一个对象,使用add方法变成了一个具体的excel对象也就是workbook,worksheet是Excel的sheet1
    
                //写入标题             
    
                worksheet.Cells[1, 1] = "燃烧吧!三国";
    
                //写入数值
    
    
                worksheet.Cells[2,  1] = "我的意志";
                worksheet.Cells[2, 2] = "绝不销毁!";
    
                System.Windows.Forms.Application.DoEvents();
    
                worksheet.Columns.EntireColumn.AutoFit();//列宽自适应
    
                MessageBox.Show(fileName + "资料保存成功", "提示", MessageBoxButtons.OK);
    
               if (saveFileName != "")
    
               {     
    
                   try 
                   {
                       workbook.Saved = true;
                       workbook.SaveCopyAs(saveFileName);  //fileSaved = true;                 
                   }                  
    
                   catch (Exception ex)                 
                   {                  
                       MessageBox.Show("导出文件时出错,文件可能正被打开!
    " + ex.Message);                  
                   }             
    
               }              
    
                xlApp.Quit();              
    
                GC.Collect();//强行销毁  

      上面的代码写的很清楚的,直接复制就能用。 但是有时会抱一个错误,有关单线程的,这里的报错可以参考这篇文章:点我

      System.Windows.Forms.Application.DoEvents(); 这一行代码是刷新的作用,具体参考这篇文章:点我



           上述代码效果图如下:




  • 相关阅读:
    Linux内核之 I/O多路复用
    Linux内核之 页高速缓存与页回写
    Linux内核之 块I/O层及I/O调度
    Linux内核之 文件I/O
    C++雾中风景15:聊聊让人抓狂的Name Mangling
    音频数据增强及python实现
    深度学习中“过拟合”的产生原因和解决方法
    资料-资源(不定期更新)
    论文翻译:2020_Acoustic Echo Cancellation Challenge Datasets And Testingframework
    语音信号处理概念
  • 原文地址:https://www.cnblogs.com/yunquan/p/8624615.html
Copyright © 2011-2022 走看看