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 ...
随机推荐
- YTU 1098: The 3n + 1 problem
1098: The 3n + 1 problem 时间限制: 1 Sec 内存限制: 64 MB 提交: 368 解决: 148 题目描述 Consider the following algor ...
- I.MX6 AW-NB177NF wifi HAL 调试修改
/************************************************************************* * I.MX6 AW-NB177NF wifi H ...
- linq to EF分组查询 group by 的使用
第一种:查询表达式语法: IQueryable<EnrollmentDateGroup> data = from student in db.Students group student ...
- 重置HTML
html,body,ul,li,ol,dl,dd,dt,p,h1,h2,h3,h4,h5,h6,form,fieldset,legend,img{margin:0;padding:0}fieldset ...
- bzoj 1911: [Apio2010]特别行动队【斜率优化dp】
仔细想想好像没学过斜率优化.. 很容易推出状态转移方程\( f[i]=max{f[j]+a(s[i]-s[j])^2+b(s[i]-s[j])+c} \) 然后考虑j的选取,如果选j优于选k,那么: ...
- 升级Python后, yum不能用了
yum需要使用python2,而升级python3后,就会导致语法错误 更正方法: sudo vim /usr/bin/yum 然后把第一行的python改成python2就好了 之后如果出现类似的, ...
- JavaScript--DOM浏览器窗口可视区域大小
浏览器窗口可视区域大小 获得浏览器窗口的尺寸(浏览器的视口,不包括工具栏和滚动条)的方法: 一.对于IE9+.Chrome.Firefox.Opera 以及 Safari: • window.inn ...
- 题解报告:NYOJ 题目143 第几是谁?(逆康托展开)
描述 现在有"abcdefghijkl”12个字符,将其按字典序排列,如果给出任意一种排列,我们能说出这个排列在所有的排列中是第几小的.但是现在我们给出它是第几小,需要你求出它所代表的序列. ...
- Android SQLite(2)如何判断表是否已经存在
在sql语句中用 if not exists void create_table(){ SQLiteDatabase dbWireter = dbhelper.getWritableDatabase( ...
- 【Visual Studio Code 】使用Visual Studio Code + Node.js搭建TypeScript开发环境
1.准备工作 Node.js Node.js - Official Site Visual Studio Code Visual Studio Code - Official Site 安装Node. ...