C#变成数据导入Excel和导出Excel
excel 基础
applicationclass c = new applicationclass(); c.visible = false; workbook wb = c.workbooks.add(xlwbatemplate.xlwbatworksheet); //wb.saveas("c:/1.xls", null, null, null, null, xlsaveasaccessmode.xlnochange, xlsaveasaccessmode.xlnochange, null, null, null, null, null);
1、读取
using (filestream stream = new filestream(@"c:\客户资料.xls", filemode.open, fileaccess.read))
{
hssfworkbook workbook = new hssfworkbook(stream);
messagebox.show(workbook.getsheetname(0));
}
2、遇到错误别慌,仔细看错误信息。可能遇到
此文来自: 马开东博客 转载请注明出处 网址:http://www.makaidong.com
的问题:文件被其他进程占用。
3、npoi处理wps生成的xls有问题。
读取excel
private void button1_click(object sender, eventargs e) { //using (filestream stream = new filestream(@"c:\book1.xls", filemode.open, fileaccess.read)) //{ // hssfworkbook workbook = new hssfworkbook(stream); // messagebox.show(workbook.getsheetname(0)); //}
//using (filestream stream = new filestream(@"c:\book1.xls", filemode.open, fileaccess.read)) //{ // hssfworkbook workbook = new hssfworkbook(stream); // hssfsheet sheet = workbook.getsheetat(0); // hssfrow row = sheet.getrow(0); // hssfcell cell1 = row.getcell(1); // hssfcell cell0 = row.getcell(0);
// messagebox.show(cell1.numericcellvalue.tostring()); // messagebox.show(cell0.stringcellvalue.tostring()); //}
//using (filestream stream = new filestream(@"c:\book1.xls", filemode.open, fileaccess.read)) //{ // hssfworkbook workbook = new hssfworkbook(stream); // hssfsheet sheet = workbook.getsheetat(0); // hssfrow row = sheet.getrow(0); // hssfcell cell1 = row.getcell(1); // if (cell1.celltype == hssfcell.cell_type_string) // { // messagebox.show("字符串"); // } // else if (cell1.celltype == hssfcell.cell_type_numeric) // { // messagebox.show("数字"); // } //}
using (filestream stream = new filestream(@"c:\book1.xls", filemode.open, fileaccess.read)) { hssfworkbook workbook = new hssfworkbook(stream); hssfsheet sheet = workbook.getsheetat(0); for (int i = 0; i <= sheet.lastrownum; i++) { hssfrow row = sheet.getrow(i); hssfcell cell0 = row.getcell(0); hssfcell cell1 = row.getcell(1); messagebox.show(string.format("{0}的年龄是:{1}",cell0.stringcellvalue,cell1.numericcellvalue));
} //messagebox.show(sheet.lastrownum.tostring()); }
}
using system;using system.collections.generic;using system.componentmodel;using system.data;using system.drawing;using system.linq;using system.text;using system.windows.forms;using system.io;using npoi.hssf.usermodel;using callcenterclient.dal;using system.data.sqlclient;
namespace callcenterclient.customers{ public partial class formcustmgr : form { public formcustmgr() { initializecomponent(); }
private void btnimportexcel _click(object sender, eventargs e) { //string filename = @"c:\khzl.xls"; string filename = txtfilename.text;//界面上敲的是什么就是什么,没有转义,转义是给编译器看的
try { using (filestream stream = new filestream(filename, filemode.open, fileaccess.read)) { hssfworkbook workbook = new hssfworkbook(stream); hssfsheet sheet = workbook.getsheetat(0); for (int i = 1; i <= sheet.lastrownum; i++)//注意从第1行开始读,第一行是表头 { hssfrow row = sheet.getrow(i); hssfcell cellname = row.getcell(0); hssfcell celltel = row.getcell(1); hssfcell cellbuydate = row.getcell(2); hssfcell cellcarno = row.getcell(3); hssfcell cellbrno = row.getcell(4);
//sqlhelper.executenonquery("insert into t_customers(id,name,telphone,buydate,carnum,bracketnum) values(newid(),@name,@telphone,@buydate,@carnum,@bracketnum)", // new sqlparameter("name", cellname.stringcellvalue), // new sqlparameter("telphone", celltel.stringcellvalue), // new sqlparameter("buydate", cellbuydate.datecellvalue), // new sqlparameter("carnum", cellcarno.stringcellvalue), // new sqlparameter("bracketnum", cellbrno.stringcellvalue));//newid()写在sql语句综合 中,在c#看来就是普通字符串,把sql扔给sqlserver运行,sqlserver会识别这个函数
//sqlhelper.executenonquery("insert into t_customers(id,name,telphone,buydate,carnum,bracketnum) values(" + newid() + ",@name,@telphone,@buydate,@carnum,@bracketnum)");//错误,注意区别。
sqlhelper.executenonquery("insert into t_customers(id,name,telphone,buydate,carnum,bracketnum) values(newid(),@name,@telphone,@buydate,@carnum,@bracketnum)", new sqlparameter("name", cellname.stringcellvalue),//易错:别写成new sqlparameter("name", cellname) new sqlparameter("telphone", celltel.stringcellvalue), new sqlparameter("buydate", cellbuydate.datecellvalue), new sqlparameter("carnum", cellcarno.stringcellvalue), new sqlparameter("bracketnum", cellbrno.stringcellvalue));
} } messagebox.show("导入成功!"); } catch (ioexception ex)//抓住ioexception类型的异常(文件正在被打开等异常) { messagebox.show(ex.message); } }
private void btnimportexcel 2_click(object sender, eventargs e) { string filename = txtfilename.text;//界面上敲的是什么就是什么,没有转义,转义是给编译器看的
try { using (filestream stream = new filestream(filename, filemode.open, fileaccess.read)) { hssfworkbook workbook = new hssfworkbook(stream); hssfsheet sheet = workbook.getsheetat(0); for (int i = 1; i <= sheet.lastrownum; i++)//注意从第1行开始读,第一行是表头 { hssfrow row = sheet.getrow(i); hssfcell cellname = row.getcell(0); hssfcell celltel = row.getcell(1); hssfcell cellbuydate = row.getcell(2); hssfcell cellcarno = row.getcell(3); hssfcell cellbrno = row.getcell(4);
//正确写法 int count = (int)sqlhelper.executescalar("select count(*) from t_customers where carnum=@carnum or bracketnum=@bracketnum", new sqlparameter("carnum", cellcarno.stringcellvalue), new sqlparameter("bracketnum", cellbrno.stringcellvalue)); //是否其他数据库 中有这辆车 if (count > 0) { continue; } datetime buydate; if (cellbuydate.celltype == hssfcell.cell_type_numeric)//日期类型 { buydate = cellbuydate.datecellvalue; } else if (cellbuydate.celltype == hssfcell.cell_type_string)//2008年9月8号 { string strbuydate = cellbuydate.stringcellvalue; strbuydate = strbuydate.replace("号", "日"); buydate = convert.todatetime(strbuydate); } else { throw new exception("未知的购买日期单元格类型"); }
sqlhelper.executenonquery("insert into t_customers(id,name,telphone,buydate,carnum,bracketnum) values(newid(),@name,@telphone,@buydate,@carnum,@bracketnum)", new sqlparameter("name", cellname.stringcellvalue),//易错:别写成new sqlparameter("name", cellname) new sqlparameter("telphone", celltel.stringcellvalue), new sqlparameter("buydate", buydate), new sqlparameter("carnum", cellcarno.stringcellvalue), new sqlparameter("bracketnum", cellbrno.stringcellvalue));
//错误写法:一个sqlparameter只能被一个command使用,只能添加一次 //sqlparameter pcarnum = new sqlparameter("carnum", cellcarno.stringcellvalue);
//int count = (int)sqlhelper.executescalar("select count(*) from t_customers where carnum=@carnum or bracketnum=@bracketnum", pcarnum, // new sqlparameter("bracketnum", cellbrno.stringcellvalue)); ////是否其他数据库 中有这辆车 //if (count > 0) //{ // continue; //}
//sqlhelper.executenonquery("insert into t_customers(id,name,telphone,buydate,carnum,bracketnum) values(newid(),@name,@telphone,@buydate,@carnum,@bracketnum)", // new sqlparameter("name", cellname.stringcellvalue),//易错:别写成new sqlparameter("name", cellname) // new sqlparameter("telphone", celltel.stringcellvalue), // new sqlparameter("buydate", cellbuydate.datecellvalue), // pcarnum, // new sqlparameter("bracketnum", cellbrno.stringcellvalue));
//影响的行数指的是修改了(update、delete等)的数据的行数,而不是select结果集的行数 //int count =sqlhelper.executenonquery("select * from t_customers where carnum=@carnum or bracketnum=@bracketnum",new sqlparameter("carnum",cellcarno.stringcellvalue), // new sqlparameter("bracketnum", cellbrno.stringcellvalue)); ////是否其他数据库 中有这辆车 //if (count > 0) //{ // continue; //}
//sqlhelper.executenonquery("insert into t_customers(id,name,telphone,buydate,carnum,bracketnum) values(newid(),@name,@telphone,@buydate,@carnum,@bracketnum)", // new sqlparameter("name", cellname.stringcellvalue),//易错:别写成new sqlparameter("name", cellname) // new sqlparameter("telphone", celltel.stringcellvalue), // new sqlparameter("buydate", cellbuydate.datecellvalue), // new sqlparameter("carnum", cellcarno.stringcellvalue), // new sqlparameter("bracketnum", cellbrno.stringcellvalue));
} } messagebox.show("导入成功!"); } catch (ioexception ex)//抓住ioexception类型的异常(文件正在被打开等异常) { messagebox.show(ex.message); } }
private void button1_click(object sender, eventargs e) {
try { importexcel 3(); messagebox.show("导入成功!"); } catch (ioexception ex)//抓住ioexception类型的异常(文件正在被打开等异常) { messagebox.show(ex.message); } }
private void importexcel 3() { string filename = txtfilename.text;//界面上敲的是什么就是什么,没有转义,转义是给编译器看的 using (filestream stream = new filestream(filename, filemode.open, fileaccess.read)) { hssfworkbook workbook = new hssfworkbook(stream); hssfsheet sheet = workbook.getsheetat(0); using (sqlconnection conn = new sqlconnection(sqlhelper.connstr)) { conn.open(); for (int i = 1; i <= sheet.lastrownum; i++)//注意从第1行开始读,第一行是表头 { hssfrow row = sheet.getrow(i); hssfcell cellname = row.getcell(0); hssfcell celltel = row.getcell(1); hssfcell cellbuydate = row.getcell(2); hssfcell cellcarno = row.getcell(3); hssfcell cellbrno = row.getcell(4);
//正确写法 int count = (int)sqlhelper.executescalar(conn,"select count(*) from t_customers where carnum=@carnum or bracketnum=@bracketnum", new sqlparameter("carnum", cellcarno.stringcellvalue), new sqlparameter("bracketnum", cellbrno.stringcellvalue)); //是否其他数据库 中有这辆车 if (count > 0) { continue; } datetime buydate; if (cellbuydate.celltype == hssfcell.cell_type_numeric)//日期类型 { buydate = cellbuydate.datecellvalue; } else if (cellbuydate.celltype == hssfcell.cell_type_string)//2008年9月8号 { string strbuydate = cellbuydate.stringcellvalue; strbuydate = strbuydate.replace("号", "日"); buydate = convert.todatetime(strbuydate); } else { throw new exception("未知的购买日期单元格类型"); }
sqlhelper.executenonquery(conn, "insert into t_customers(id,name,telphone,buydate,carnum,bracketnum) values(newid(),@name,@telphone,@buydate,@carnum,@bracketnum)", new sqlparameter("name", cellname.stringcellvalue),//易错:别写成new sqlparameter("name", cellname) new sqlparameter("telphone", celltel.stringcellvalue), new sqlparameter("buydate", buydate), new sqlparameter("carnum", cellcarno.stringcellvalue), new sqlparameter("bracketnum", cellbrno.stringcellvalue));
} }
} }
private void btnexporttoexcel 1_click(object sender, eventargs e) { if (savefiledlg.showdialog() != dialogresult.ok) { return; } hssfworkbook workbook = new hssfworkbook(); hssfsheet sheet = workbook.createsheet(); //姓名 电话 购买日期 车号 车架号 //别用dataset,因为数据量可能会非常大,如果用dataset会非常占内存。
using (sqlconnection conn = new sqlconnection(sqlhelper.connstr)) { conn.open(); using (sqlcommand cmd = conn.createcommand()) { cmd.commandtext = "select * from t_customers"; using (sqldatareader reader = cmd.executereader()) { //todo:加表头。 int rownum = 0;//行号 while (reader.read()) { string name = reader.getstring(reader.getordinal("name")); string telphone = reader.getstring(reader.getordinal("telphone")); datetime buydate = reader.getdatetime(reader.getordinal("buydate")); string carnum = reader.getstring(reader.getordinal("carnum")); string brnum = reader.getstring(reader.getordinal("bracketnum"));
hssfrow row = sheet.createrow(rownum);//创建第rownum行
row.createcell(0, hssfcell.cell_type_string).setcellvalue(name); row.createcell(1, hssfcell.cell_type_string).setcellvalue(telphone); row.createcell(2, hssfcell.cell_type_string).setcellvalue(buydate.toshortdatestring()); row.createcell(3, hssfcell.cell_type_string).setcellvalue(carnum); row.createcell(4, hssfcell.cell_type_string).setcellvalue(brnum); rownum++; } } } }
using (filestream stream = new filestream(savefiledlg.filename, filemode.openorcreate, fileaccess.readwr ite)) { workbook.write(stream); } messagebox.show("保存成功!");
}
private void formcustmgr_load(object sender, eventargs e) { this.t_customerstableadapter1.fill(this.datasetcustomers1.t_customers); }
private void btnaddnew_click(object sender, eventargs e) { datarowview drv = bscustomers.addnew() as datarowview; callcenterclient.dal.datasetcustomers.t_customersrow custrow = drv.row as callcenterclient.dal.datasetcustomers.t_customersrow; custrow.id = guid.newguid(); }
private void btnsave_click(object sender, eventargs e) { t_customerstableadapter1.update(this.datasetcustomers1.t_customers); } }} mmmm写入excel
hssfworkbook workbook = new hssfworkbook(); hssfsheet sheet = workbook.createsheet(); hssfrow row = sheet.createrow(0); row.createcell(0, hssfcell.cell_type_string).setcellvalue("hello"); row.createcell(1, hssfcell.cell_type_numeric).setcellvalue(3.14); using (filestream stream = new filestream(@"c:\1.xls", filemode.openorcreate, fileaccess.readwr ite)) { workbook.write(stream); }
搜索此文相关文章:C#变成数据导入Excel和导出Excel
此文链接:http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E6%B1%87/38169.shtml
转载请注明出处:C#变成数据导入Excel和导出Excel - 博客园
C#变成数据导入Excel和导出Excel的更多相关文章
- ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据
ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不 ...
- .Net NPOI 根据excel模板导出excel、直接生成excel
一.根据Excel模板导出excel 1.导入NPOI.dll 2.DAL中添加类ExportExcel.cs using NPOI.SS.UserModel; using System; usin ...
- [转]Excel.dll 导出Excel控制
Excel.dll 导出Excel控制 2010-06-12 11:26 2932人阅读 评论(2) 收藏 举报 excelmicrosoftstring产品服务器google 最近做了个导出Exce ...
- 纳税服务系统【用户模块之使用POI导入excel、导出excel】
前言 再次回到我们的用户模块上,我们发现还有两个功能没有完成: 对于将网页中的数据导入或导出到excel文件中,我们是完全没有学习过的.但是呢,在Java中操作excel是相对常用的,因此也有组件供我 ...
- [poi使用]使用excel模版导出excel
Apache POI是基于Office Open XML标准(OOXML)和Microsoft的OLE 2复合文档格式(OLE2)处理各种文件格式的开源项目.简而言之,您可以使用Java读写MS ...
- C#导出EXCEL(DataTable导出EXCEL)
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.I ...
- poi根据excel模板导出Excel
/****单元格值对象**/public class Cells { /*** * 行 */ private int row; /** * 列 */ private int column; /** * ...
- 【Java excel】导出excel文件
TestExprot package excel; import java.io.File; import java.io.IOException; import java.text.DateForm ...
- POI操作EXCEL之导出Excel(设置有效性,下拉列表引用)
本人使用的是poi-bin-3.10-FINAL-20140208.zip 版本的poi以下是程序关键代码: //需要引用的类 import java.io.File; import java.io. ...
随机推荐
- Google搜索技术
命令 双引号 把搜索词放在双引号中,代表完全匹配搜索,也就是说搜索结果返回的页面包含双引号中出现的所有的词,连顺序也必须完全匹配.bd和Google都支持这个指令. 减号 减号代表搜索不包含减号后面的 ...
- css模块化思想(一)--------命名是个技术活
引子: 女孩子都喜欢买衣服,而我也不例外,奈何钱包太瘦,买不起高大上的定制,只能买撞衫率极高的休闲衣,不过对于我来说,我还是开心的,毕竟买衣服买的不仅是衣服,更是一种心情.在web前端的世界里,css ...
- (七)Hibernate 映射继承
所有项目导入对应的hibernate的jar包.mysql的jar包和添加每次都需要用到的HibernateUtil.java 第一节:每个具体类对应一个表 Image.java package co ...
- 使用html5结构化元素
显示的效果如上边这样,但是有没有发现内容的外侧没有边线(这个难道是因为浏览器不同吗?有待测试) html5中新增加的元素<header>可以明确的告诉浏览器此处是页头,<nav> ...
- Git和CocoaPods的简单使用
Git是一款免费.开源的分布式版本控制系统,还有一种SVN的开源的集中式版本控制系统.分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一 ...
- Harry Potter
Names appearing in "Harry Potter" 1.Harry Potter ①Harry is from Henry. ②Harry is related t ...
- undrop for innodb c_parser 源码分析
一,主函数功能: 1,分析命令行参数,保存在全局变量中; 2,打开文件,加载表定义sql,调用分析函数开始处理; 3,打印导入数据的sql语句; 二,文件处理函数,void process_ibfil ...
- POJ 1276 Cash Machine -- 动态规划(背包问题)
题目地址:http://poj.org/problem?id=1276 Description A Bank plans to install a machine for cash withdrawa ...
- RX编程笔记——JavaScript 获取地理位置
RX编程笔记——JavaScript 获取地理位置 2016-07-05
- lucene 4.0学习
一:官方文件 http://lucene.apache.org/core/4_0_0/ ps:网上参考文章:http://www.cnblogs.com/xing901022/p/3933675.ht ...