Winform 导入导出方法
导出时:引用 using Excel = Microsoft.Office.Interop.Excel;
#region 读取excel
//打开方法
public DataTable ExceltoDataSet(string path)
{
string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1';";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
System.Data.DataTable schemaTable = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
string tableName = schemaTable.Rows[0][2].ToString().Trim();
string strExcel = "";
OleDbDataAdapter myCommand = null;
DataSet ds = null;
strExcel = "Select * From [" + tableName + "]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
ds = new DataSet();
myCommand.Fill(ds, tableName);
System.Data.DataTable dt = ds.Tables[0];
return dt;
}
#endregion
#region 导出excel
/// <summary>
/// 将数据表保存到Excel表格中
/// </summary>
/// <param name="addr">Excel表格存放地址(程序运行目录后面的部分)</param>
/// <param name="dt">要输出的DataTable</param>
public void SaveToExcel(string addr, System.Data.DataTable dt, string sheetName)
{
//0.注意:
// * Excel中形如Cells[x][y]的写法,前面的数字是列,后面的数字是行!
// * Excel中的行、列都是从1开始的,而不是0
//1.制作一个新的Excel文档实例
Excel::Application xlsApp = new Excel::Application();
xlsApp.Workbooks.Add(true);
/* 示例输入:需要注意Excel里数组以1为起始(而不是0)
* for (int i = 1; i < 10; i++)
* {
* for (int j = 1; j < 10; j++)
* {
* xlsApp.Cells[i][j] = "-";
* }
* }
*/
//2.设置Excel分页卡标题
xlsApp.ActiveSheet.Name = sheetName;
//3.合并第一行的单元格
string temp = "";
if (dt.Columns.Count < 26)
{
temp = ((char)('A' + dt.Columns.Count)).ToString();
}
else if (dt.Columns.Count <= 26 + 26 * 26)
{
temp = ((char)('A' + (dt.Columns.Count - 26) / 26)).ToString()
+ ((char)('A' + (dt.Columns.Count - 26) % 26)).ToString();
}
else throw new Exception("列数过多");
Excel::Range range = xlsApp.get_Range("A1", temp + "1");
//range.ClearContents(); //清空要合并的区域
//range.MergeCells = true; //合并单元格
////4.填写第一行:表名,对应DataTable的TableName
//xlsApp.Cells[1][1] = dt.TableName;
//xlsApp.Cells[1][1].Font.Name = "黑体";
//xlsApp.Cells[1][1].Font.Size = 25;
//xlsApp.Cells[1][1].Font.Bold = true;
//xlsApp.Cells[1][1].HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//居中
//xlsApp.Rows[1].RowHeight = 60; //第一行行高为60(单位:磅)
////5.合并第二行单元格,用于书写表格生成日期
//range = xlsApp.get_Range("A2", temp + "2");
//range.ClearContents(); //清空要合并的区域
//range.MergeCells = true; //合并单元格
////6.填写第二行:生成时间
//xlsApp.Cells[1][2] = "报表生成于:" + DateTime.Now.ToString();
//xlsApp.Cells[1][2].Font.Name = "宋体";
//xlsApp.Cells[1][2].Font.Size = 15;
////xlsApp.Cells[1][2].HorizontalAlignment = 4;//右对齐
//xlsApp.Cells[1][2].HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//居中
//xlsApp.Rows[2].RowHeight = 30; //第一行行高为60(单位:磅)
//7.填写各列的标题行
xlsApp.Cells[1][1] = "ID";
for (int i = 0; i < dt.Columns.Count; i++)
{
xlsApp.Cells[i + 2][1] = dt.Columns[i].ColumnName;
}
xlsApp.Rows[1].Font.Name = "宋体";
xlsApp.Rows[1].Font.Size = 15;
xlsApp.Rows[1].Font.Bold = true;
//xlsApp.Rows[1].HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//居中
////设置颜色
//range = xlsApp.get_Range("A3", temp + "3");
//range.Interior.ColorIndex = 33;
//8.填写DataTable中的数据
for (int i = 0; i < dt.Rows.Count; i++)
{
xlsApp.Cells[1][i + 2] = (i + 1).ToString();
for (int j = 0; j < dt.Columns.Count; j++)
{
xlsApp.Cells[j + 2][i + 2] = dt.Rows[i][j];
}
}
range = xlsApp.get_Range("A4", temp + (dt.Rows.Count + 1).ToString());
//range.Interior.ColorIndex = 37;
//range.HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;
////9.描绘边框
//range = xlsApp.get_Range("A1", temp + (dt.Rows.Count + 1).ToString());
//range.Borders.LineStyle = 1;
//range.Borders.Weight = 3;
//10.打开制作完毕的表格
//xlsApp.Visible = true;
//11.保存表格到根目录下指定名称的文件中
xlsApp.ActiveWorkbook.SaveAs(addr);
xlsApp.Quit();
xlsApp = null;
GC.Collect();
}
#endregion
Winform 导入导出方法的更多相关文章
- sqlsever备份,还原和导入导出方法
一:sqlsever数据库的几种备份和还原方法: 第一种:备份还原方法 1.选择要备份的数据库-任务-备份- 打开之后会看到里面有: 常规:在常规页面中我们可以看到:右下角位置有一个可以更改存储(备份 ...
- MySQL数据导入导出方法与工具mysqlimport
MySQL数据导入导出方法与工具mysqlimport<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office ...
- oracle11g数据库导入导出方法教程
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/xinxiaoyonng/article/ ...
- ASP .Net C# ---Excel导入导出方法
导入导出的方法以及引用,可以自行创建一个帮助类 using System;using NPOI.SS.UserModel;using NPOI.XSSF.UserModel;using NPOI.HS ...
- mysql数据导入导出方法总结
MySQL数据备份还原方式总结: 一.将数据导入到指定的数据库 第一种导入方式: (linux下和Windows 下语法是一样的,只是路径的书写方式不同而已) 1.创建一个空数据库 2.进入MySQL ...
- oracle数据库导入导出方法
Oracle Database 10g以后引入了最新的数据泵(Data Dump)技术,使DBA或开发人员可以将数据库元数据(对象定义)和数据快速移动到另一个oracle数据库中. 数据泵导出导入(E ...
- ES6详解八:模块(Module)!--各种导入导出方法
[-] 基本用法 命名导出named exports 默认导出 命名导出结合默认导出 仅支持静态导入导出 各种导入和导出方式总结 modules是ES6引入的最重要一个特性. 所以以后再写模块,直 ...
- winform导入导出excel,后台动态添加控件
思路: 导入: 1,初始化一个OpenFileDialog类 (OpenFileDialog fileDialog = new OpenFileDialog();) 2, 获取用户选择文件的后缀名(s ...
- mysql 导入导出方法。
1.导出 mysqldump -u username - p databasename >名.sql enter passward: 2.导入:mysql -uroot -proot sour ...
随机推荐
- django开发个人简易Blog——构建项目结构
开发之前第一步,就是构造整个的项目结构.这就好比作一幅画,第一步就是描绘轮廓,有了轮廓,剩下的就是慢慢的填充细节.项目结构规划如下图: 项目结构描述: 本项目以fengzhengBlog为根目录. a ...
- SignalR + KnockoutJS + ASP.NET MVC4 实现井字游戏
1.1.1 摘要 今天,我们将使用SignalR + KnockoutJS + ASP.NET MVC实现一个实时HTML5的井字棋游戏. 首先,网络游戏平台一定要让用户登陆进来,所以需要一个登陆模块 ...
- 开启Ubuntu root 远程登录
很早就遇到这问题了,但是今天才想到解决.也就是说Ubuntu在安装的时候,远程SSH登录是禁止的.每次你必须使用普通的用户SSH远程登录以后,然后su切换到root这样,对于强迫症的我实在是很难容忍的 ...
- java指定路径写、读文件
package com.util; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; ...
- [翻译]AKKA笔记 - ACTOR MESSAGING - REQUEST AND RESPONSE -3
上次我们看Actor消息机制,我们看到开火-忘记型消息发出(意思是我们只要发个消息给Actor但是不期望有响应). 技术上来讲, 我们发消息给Actors就是要它的副作用. 这就是这么设计的.除了不响 ...
- Node.js入门:Node.js&NPM的安装与配置
Node.js安装与配置 Node.js已经诞生两年有余,由于一直处于快速开发中,过去的一些安装配置介绍多数针对0.4.x版本而言的,并非适合最新的0.6.x的版本情况了,对此,我们将在0. ...
- Atitit 图像处理 灰度图片 灰度化的原理与实现
Atitit 图像处理 灰度图片 灰度化的原理与实现 24位彩色图与8位灰度图 首先要先介绍一下24位彩色图像,在一个24位彩色图像中,每个像素由三个字节表示,通常表示为RGB.通常,许多24位彩色图 ...
- iOS---用LLDB调试,让移动开发更简单(一)
因文章字数超过限制,所以拆分成了上下篇 LLDB的Xcode默认的调试器,它与LLVM编译器一起,带给我们更丰富的流程控制和数据检测的调试功能.平时用Xcode运行程序,实际走的都是LLDB.熟练使用 ...
- Maven Myeclipse 搭建项目
一.maven概述 Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具! 简单说Maven 是一个项目管理和构建自动化工具 二.环境搭建 1. ...
- C++中“类”相关知识点汇总
一:类中默认的成员函数 一个空的class在C++编译器处理过后就不再为空,编译器会自动地为我们声明一些member function,如果你写 class Empty{}; 就相当于: class ...