C#在Excel的簡單操作--適用:與DB數據的簡單交互
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Data.OleDb; using System.Data; using System.Windows.Forms; namespace WmsClient { public class ExcelHelper { //Excel導入DataSet public static DataSet ExcelToDataSet() { DataSet dataSet = new DataSet(); OpenFileDialog OFD = new OpenFileDialog(); OFD.Filter = "Excel Files(.xls)|*.xls|All Files(*.*)|*.*"; if (OFD.ShowDialog() == DialogResult.OK) { string strFileName = OFD.FileName; dataSet = ExcelToDataSet(strFileName); } return dataSet; } //Excel導入DataSet public static DataSet ExcelToDataSet(string filePath) { if (!File.Exists(filePath)) throw new FileNotFoundException("文件不存在"); bool isExcel2003 = filePath.EndsWith(".xls"); string connectionString = string.Format( isExcel2003 ? "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;" : "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES\"", filePath); DataSet ds = new DataSet(); using (OleDbConnection connection = new OleDbConnection(connectionString)) { connection.Open(); ][].ToString().Trim(); ; string commandText = "SELECT * FROM [" + sheetName + "]"; using (OleDbDataAdapter da = new OleDbDataAdapter(commandText, connection)) { da.Fill(ds); connection.Close(); } } return ds; } //DataGridView導出Excel public static void DataGridViewToExcel(DataGridView dgv) { //DataTableToExcel(dgv.DataSource as DataTable);//數據源為DataTable時適用 SaveFileDialog dlg = new SaveFileDialog(); dlg.Filter = "Execl files (*.xls)|*.xls"; dlg.FilterIndex = ; dlg.RestoreDirectory = true; dlg.Title = "保存為Excel文件"; if (dlg.ShowDialog() == DialogResult.OK) { Stream myStream; myStream = dlg.OpenFile(); StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.Default); string columnTitle = ""; try { //寫入標題列 ; i < dgv.ColumnCount; i++) { if (dgv.Columns[i].Visible) { if (columnTitle == "") { columnTitle = "\"" + dgv.Columns[i].HeaderText + "\""; } else { columnTitle += "\t" + "\"" + dgv.Columns[i].HeaderText + "\""; } } } sw.WriteLine(columnTitle); //寫入內容列 ; j < dgv.Rows.Count; j++) { string columnValue = ""; ; i < dgv.Columns.Count; i++) { if (dgv.Columns[i].Visible) { string cellValue = dgv.Rows[j].Cells[i].Value == null ? "" : dgv.Rows[j].Cells[i].FormattedValue.ToString().Replace("\"", "'"); if (columnValue == "") { columnValue = "\"" + cellValue + "\""; } else { columnValue += "\t" + "\"" + cellValue + "\""; } } } sw.WriteLine(columnValue); } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } finally { sw.Close(); myStream.Close(); } } } //DataTable導出Excel public static void DataTableToExcel(DataTable table) { SaveFileDialog dlg = new SaveFileDialog(); dlg.Filter = "Execl files (*.xls)|*.xls"; dlg.FilterIndex = ; dlg.RestoreDirectory = true; dlg.Title = "保存為Excel文件"; if (dlg.ShowDialog() == DialogResult.OK) { Stream myStream; myStream = dlg.OpenFile(); StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.Default); string columnTitle = ""; try { //寫入標題列 ; i < table.Columns.Count; i++) { if (columnTitle == "") { columnTitle = "\"" + table.Columns[i].ColumnName + "\""; } else { columnTitle += "\t" + "\"" + table.Columns[i].ColumnName + "\""; } } sw.WriteLine(columnTitle); //寫入內容列 ; j < table.Rows.Count; j++) { string columnValue = ""; ; i < table.Columns.Count; i++) { string cellValue = table.Rows[j][i] == DBNull.Value ? "" : table.Rows[j][i].ToString().Replace("\"", "'"); if (columnValue == "") { columnValue = "\"" + cellValue + "\""; } else { columnValue += "\t" + "\"" + cellValue + "\""; } } sw.WriteLine(columnValue); } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } finally { sw.Close(); myStream.Close(); } } } } }
C#在Excel的簡單操作--適用:與DB數據的簡單交互的更多相关文章
- 使用DataSet與DataAdapter對數據庫進行操作
1.定義連接字符串 var source = "server=(local); integrated security=SSPI; database=test"; var conn ...
- c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出
c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出 using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using S ...
- 无法将类型为“Excel.ApplicationClass”的 COM 对象强制转换为接口类 型“Excel._Application”。此操作失败的原因是对 IID 为“{000208D5 -0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 加载类型库/DLL 时出错。 (异常来 自 HRESULT:
无法将类型为“Excel.ApplicationClass”的 COM 对象强制转换为接口类 型“Excel._Application”.此操作失败的原因是对 IID 为“{000208D5 -000 ...
- VBA基础之Excel VBA 表格的操作(一)
一.Excel VBA 表格的操作1. Excel表格的指定以及表格属性的设置 Sub main() '把表格B2的值改为"VBA Range和Cells函数" Range(&qu ...
- Excel怎么增加撤销操作的次数?Excel增加可撤销次数教程
Excel怎么增加撤销操作的次数?Excel增加可撤销次数教程 在Excel的使用中,返回上一步是经常用到的一个工具,当数据填写有误需要查看之前的内容时,一般会通过"Ctrl Z" ...
- python读取数据写入excel的四种操作
Python对Excel的读写主要有:xlrd.xlwt.xlutils.openpyxl.xlsxwriter几种 xlutils结合xlrd: 操作的是以xls后缀的excel,读取文件保留原格式 ...
- python学习笔记(十三)-python对Excel进行读写修改操作
日常工作中会遇到Excel的读写问题.我们可以使用xlwt 模块将数据写入Excel表格,使用xlrd 模块从Excel读取数据,使用xlutils模块和xlrd模块结合对Excel数据进行修改.下面 ...
- PHPExcel讀取excel數據
require_once 'PHPExcel.php'; $PHPReader = new PHPExcel_Reader_Excel2007(); $filePath = 'wjyl.xlsx'; ...
- gcc 簡單操作
gcc -c test.c 產出 test.o object file gcc -c test.c -o XXX 產出 XXX object file gcc test.c -o aaa 產出 aaa ...
随机推荐
- 避免表单重复提交(js实现) (转)
<script language="javascript"> function submitForm(obj){ obj.disabl ...
- 循环冗余检验 (CRC) 算法原理
Cyclic Redundancy Check循环冗余检验,是基于数据计算一组效验码,用于核对数据传输过程中是否被更改或传输错误. 算法原理 假设数据传输过程中需要发送15位的二进制信息g=10100 ...
- bzoj 1127 KUP —— 最大子矩形+答案构造
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1127 首先,把权值 > 2*k 的点作为“坏点”,然后在图中用悬线法找权值最大的子矩形 ...
- zoom和transform scale
一.zoom zoom的字面意思是“变焦”,摄影的时候常用到的一个概念.对于web上的zoom效果,你也可以按照此概念理解.可以改变页面上元素的尺寸,属于真实尺寸. 在旧的web时代.*zoom: 1 ...
- ES6躬行记(23)——Promise的静态方法和应用
一.静态方法 Promise有四个静态方法,分别是resolve().reject().all()和race(),本节将着重分析这几个方法的功能和特点. 1)Promise.resolve() 此方法 ...
- 洛谷 P2766 最长不下降子序列问【dp+最大流】
死于开小数组的WA?! 第一问n方dp瞎搞一下就成,f[i]记录以i结尾的最长不下降子序列.记答案为mx 第二问网络流,拆点限制流量,s向所有f[i]为1的点建(s,i,1),所有f[i]为mx(i+ ...
- 洛谷P3246 [HNOI2016]序列
传送门 题解 //minamoto #include<iostream> #include<cstdio> #define ll long long using namespa ...
- Windows中句柄和ID的区别
写在前面:这里介绍句柄 对于“句柄”,在下一直停留在一知半解的认识层面,近日在下学习Windows编程,决定趁此机会将句柄彻底搞清楚.查阅了一些网络上的资料,发现网络上的讲解大概可以分为两类:一种是以 ...
- Linux的防火墙概念
#linux的防火墙概念#因为如果你不关防火墙,很可能运行 django.nginx.mysql出错#防火墙可能会阻挡端口流量的 出口#也会阻挡外来请求的 入口 #selinux iptables f ...
- 使用方向变换(directional transform)图像分块压缩感知
论文的思路是先介绍分块压缩感知BCS,然后介绍使用投影和硬阈值方法的迭代投影方法PL,接着将PL与维纳滤波器结合形成SPL(平滑PL),并且介绍了稀疏表示的几种基,提出了两种效果较好的稀疏基:CT与D ...