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

时间: 2024-10-13 10:07:51

Winform 导入导出方法的相关文章

Linux环境下mysql数据库导入导出方法

导出整个数据库中的所有数据 1.在linux命令行下输入: mysqldump -u userName -p  dabaseName  > fileName.sql fileName.sql最好加上路径名 导出数据库中的某个表的数据 mysqldump -u userName -p  dabaseName tableName > fileName.sql 导出整个数据库中的所有的表结构 在linux命令行下输入: mysqldump -u userName -p -d dabaseName  

15 MySQL数据导入导出方法与工具介绍之三

您可以看到MySQL有很多可以导入数据的方法,然而这些只是数据传输中的一半.另外的一般是从MySQL数据库中导出数据.有许多的原因我们需要导出数据.一个重要的原因是用于备份数据库.数据的造价常常是昂贵的,需要谨慎处理它们.经常地备份可以帮助防止宝贵数据地丢失:另外一个原因是,也许您希望导出数据来共享. 在这个信息技术不断成长的世界中,共享数据变得越来越常见. 比方说Macmillan USA维护护着一个将要出版的书籍的大型数据库.这个数据库在许多书店之间共享,这样他们就知道哪些书将会很快出版.医

MySQL导入导出方法总结

使用into outfile 和 load data infile导入导出数据 这种方法的好处是,导出的数据可以自己规定格式,并且导出的是纯数据,不存在建表信息,你可以直接导入另外一个同数据库的不同表中,相对于mysqldump比较灵活机动. 下面的mysql命令是把select的mytable表中的数据导出到/home/db_bak2012文件. select * from mytable where status!=0 and name!='' into outfile '/home/db_

oracle数据库导入导出方法

Oracle Database 10g以后引入了最新的数据泵(Data Dump)技术,使DBA或开发人员可以将数据库元数据(对象定义)和数据快速移动到另一个oracle数据库中. 数据泵导出导入(EXPDP和IMPDP)的作用  1.实现逻辑备份和逻辑恢复.  2.在数据库用户之间移动对象.  3.在数据库之间移动对象  4.实现表空间搬移. 数据泵导出导入与传统导出导入的区别: 在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的EXP和IMP工具,还

使用Transact-SQL进行数据导入导出方法详解

刚接触这种数据搬移的方式会有很多问题     我只用过  第一种方式有的朋友会出现   SQL Server 阻止了对组件 /'Ad Hoc Distributed Queries/' 的访问 解决方案    请参考http://blog.csdn.net/the_pain/article/details/4103518 启用Ad Hoc Distributed Queries: exec sp_configure 'show advanced options',1reconfigureexec

winform导入导出excel,后台动态添加控件

思路: 导入: 1,初始化一个OpenFileDialog类 (OpenFileDialog fileDialog = new OpenFileDialog();) 2, 获取用户选择文件的后缀名(string extension = Path.GetExtension(fileDialog.FileName).ToLower();),并设置允许后缀文件名: 3,NPOI转datetable,遍历tatetable转成实体类列表并入库: 导出: 1, 创建提示用户保存类,SaveFileDial

18 MySQL数据导入导出方法与工具介绍之二

批处理是一种非交互式运行mysql程序的方法,如同您在mysql中使用的命令一样,你仍然将使用这些命令. 为了实现批处理,您重定向一个文件到mysql程序中,首先我们需要一个文本文件,这个文本文件包含有 与我们在mysql中输入的命令相同的文本.比如我们要插入一些数据,使用包含下面文本的文件(文件名为New_Data.sql,当然我们也可以取名为 New_Data.txt及任何其他的合法名字,并不一定要以后缀sql结尾):USE Meet_A_Geek;INSERT INTO Customers

mysql 数据库导入导出方法总结(是时候总结)

注意:mysqldump  是在  操作系统命令行下运行的. 不是在 mysql 命令行下运行的进入MySQL目录下的bin文件夹,如:C:\Program Files\MySQL\MySQL Server 5.5\bin> mysqldump -h IP -u 用户名 -p 数据库名 > 导出的文件名 (1)-p 后面不能加password,只能单独输入如1中那样 (2)mysqldump是在cmd下的命令,不能再mysql下面,即不能进入mysql的(即use dpname下,得exit退

2016.8.17服务器端数据库用户导入导出方法 expdp和impdp

EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用. IMP只适用于EXP导出的文件,不适用于EXPDP导出文件:IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件. EXPDP导出命令: C:\Users\Administrator>expdp ndp_admin/[email protected] schemas=ndp2016_04 dumpfile=snn