C#读写Excel
读
Range ce=sheet.Cells[2,3];
string vv=ce.value;
写
//注意:
// * Excel中形如Cells[x][y]的写法,前面的数字是RowIndex,后面的数字是ColumnIndex!
// * Excel中的行、列都是从1开始的,而不是0
//1.制作一个新的Excel文档实例
Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();//创建excel
Workbook myWorkBook = excelApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);//创建工作簿(workBook;即excel文件主体本身)
//Worksheet sheet = (Worksheet)workBook.Worksheets[1];//创建主工作簿
//增加查询信息Sheet //
Microsoft.Office.Interop.Excel.Worksheet sarchInfoSheet = myWorkBook.Sheets.Add();
sarchInfoSheet.Name = "查询条件";//确定sheet名称
sarchInfoSheet.Cells[1, 1] = "起始时间:";//起始时间
sarchInfoSheet.Cells[1, 2] = SearchPageModel.mySearchPageModel.startDateTime.ToString();//起始时间
sarchInfoSheet.Cells[2, 1] = "结束时间:";//结束时间
sarchInfoSheet.Cells[2, 2] = SearchPageModel.mySearchPageModel.endDateTime.ToString();//结束时间
sarchInfoSheet.Cells[3, 1] = "手机型号:";
sarchInfoSheet.Cells[3, 2] = SearchPageModel.mySearchPageModel.selectedModel;
sarchInfoSheet.Cells[4, 1] = "测试计划:";
sarchInfoSheet.Cells[4, 2] = SearchPageModel.mySearchPageModel.selectedFile;
sarchInfoSheet.Cells[5, 1] = "失败项目:";
sarchInfoSheet.Cells[5, 2] = SearchPageModel.mySearchPageModel.selectedItem;
sarchInfoSheet.Cells[6, 1] = "失败原因:";
sarchInfoSheet.Cells[6, 2] = SearchPageModel.mySearchPageModel.selectedReason;
sarchInfoSheet.Cells[7, 1] = "PhoneID:";
sarchInfoSheet.Cells[7, 2] = SearchPageModel.mySearchPageModel.phoneID;
sarchInfoSheet.Cells[8, 1] = "工位IP:";
sarchInfoSheet.Cells[8, 2] = SearchPageModel.mySearchPageModel.computerIP;
sarchInfoSheet.Cells[9, 1] = "计算机名:";
sarchInfoSheet.Cells[9, 2] = SearchPageModel.mySearchPageModel.computerName;
sarchInfoSheet.Cells[10, 1] = "线程号码:";
sarchInfoSheet.Cells[10, 2] = SearchPageModel.mySearchPageModel.threadNumber;
sarchInfoSheet.Cells[11, 1] = "操作人员:";
sarchInfoSheet.Cells[11, 2] = SearchPageModel.mySearchPageModel.tsOperator;
sarchInfoSheet.Cells[12, 1] = "测试类型:";
sarchInfoSheet.Cells[12, 2] = SearchPageModel.mySearchPageModel.testType;
sarchInfoSheet.Cells[13, 1] = "软件版本:";
sarchInfoSheet.Cells[13, 2] = SearchPageModel.mySearchPageModel.softVersion;
sarchInfoSheet.Cells[14, 1] = "测试OK:";
sarchInfoSheet.Cells[14, 2] = SearchPageModel.mySearchPageModel.testResultOK;
sarchInfoSheet.Cells[15, 1] = "测试NG:";
sarchInfoSheet.Cells[15, 2] = SearchPageModel.mySearchPageModel.testResultNG;
sarchInfoSheet.Cells[16, 1] = "Data is exported from HustAnalyser.";
//
Worksheet myWorkSheet = myWorkBook.Sheets.Add();
//2.设置Excel分页卡标题
myWorkSheet.Name = "详细数据";//确定sheet名称
//方法二:生成Excel中列头名称
for (int i = 0; i < dataSouce.Columns.Count; i++)
{
myWorkSheet.Cells[1, i + 1] = dataSouce.Columns[i].ColumnName;//输出DataGridView列头名
if (i>= addCollumNum && searchResults[i - addCollumNum].result == "FAIL")
{
Microsoft.Office.Interop.Excel.Range columnRange = myWorkSheet.Columns.EntireColumn[i + 1];
columnRange.Font.Color = 0x0000FF;//(蓝00绿00红00)
}
}
//RunInfo = "testDataArray复制数据到Excel";
//方法二:整体赋值
Microsoft.Office.Interop.Excel.Range dataSourceRange = myWorkSheet.Range[myWorkSheet.Cells[2, 1], myWorkSheet.Cells[dataSouce.Rows.Count + 1, dataSouce.Columns.Count]];
dataSourceRange.Value = testDataArray; //给Exccel中的Range整体赋值
//RunInfo = "Excel格式设置...";
dataSourceRange.EntireColumn.AutoFit(); //设定Excel列宽度自适应
//5.设置格式
Microsoft.Office.Interop.Excel.Range rowRange = myWorkSheet.Rows.EntireRow[1];//首行
rowRange.Font.ColorIndex = ColorIndex.深蓝;//首行颜色
rowRange.Interior.Color = 0xA6AA00;//(蓝A6绿AA红00) 首行背景
rowRange.Font.Bold = true;//首行加粗
Microsoft.Office.Interop.Excel.Range colRange = myWorkSheet.Columns.EntireColumn[1];//首列
//colRange.Font.ColorIndex = ColorIndex.深蓝;//首列颜色
colRange.Font.Bold = true;//首列加粗
//冻结首行首列
excelApp.ActiveWindow.SplitRow = 1;//设置将指定窗口拆分成窗格处的行号(拆分线以上的行数)
excelApp.ActiveWindow.SplitColumn = 1;//设置将指定窗口拆分成窗格处的列号(拆分线左侧的列数)
excelApp.ActiveWindow.FreezePanes = true;//冻结首行首列
//边框实线
Microsoft.Office.Interop.Excel.Range dataRange = myWorkSheet.Range[myWorkSheet.Cells[1, 1], myWorkSheet.Cells[dataSouce.Rows.Count, dataSouce.Columns.Count]];//
dataRange.Borders.LineStyle = 1;//设置边框为实线
//myWorkSheet.Cells.Borders.LineStyle = 1;//设置整个数据区边框为实线
//auto adjust column width (according to content)调整列宽
//Microsoft.Office.Interop.Excel.Range allColumn = myWorkSheet.Columns;
//allColumn.AutoFit();//调整列宽
dispatcher.Invoke(new System.Action(() =>
{
//以下为Excel保存过程-----------------------------
string excelFile = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "\\HustAnalyser导出info" + DateTime.Now.ToString("-yyyyMMddHHmmss") + ".xlsx"; //默认桌面
System.Windows.Forms.SaveFileDialog saveFileDialog = new System.Windows.Forms.SaveFileDialog();
saveFileDialog.Filter = "Excel文件(*.xlsx)|*.xlsx";
saveFileDialog.FileName = "HustAnalyser导出info" + DateTime.Now.ToString("-yyyyMMddHHmmss");
if (saveFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
excelFile = saveFileDialog.FileName;
}
//myWorkBook.Save();//保存结果
myWorkBook.SaveAs(excelFile);//保存结果
excelApp.Quit();
excelApp = null;
System.Diagnostics.Process.Start("Explorer", "/select," + excelFile);
//Excel保存结束------------------------------------
}));

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
通过命令行参数发送阿里云短信 - python
阿里云的“消息服务”产品文档中,提供了python的演示例子。简单替换例子文件中的 REGION 等参数就可以运行,成功发出手机短信了。但每次发送不同内容的短信,大概流程是:打开文件,替换短信内容,保存文件,运行python文件,发出短信。如果短信内容中是固定的几个变量,能否通过参数传入到命令行发送呢? 如果您还没有订购阿里云的产品,可点此链接查看优惠价格喔。 过程: 1.修改 demo_sms_send.py 文件内容,在前边添加以下参数设定: vserver_ip = sys.argv[1] vserver_expire_time = sys.argv[2] vclient_phone = sys.argv[3] 2.将设定的参数填写到发送语句中,如: params = {"server_ip":vserver_ip,"server_expire_time":vserver_expire_time} print(send_sms(__business_id, vclient_phone, "安群", "SMS_152505789", params)) 3.在命令行中,执行如 pyt...
-
下一篇
35个Java代码优化的细节,你知道几个?
前言 代码 优化 ,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于代码的运行效率绝对是有提升的。代码优化的目标是:减小代码的体积提高代码运行的效率 代码优化细节 1、尽量指定类、方法的final修饰符带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写。如果指定了一个类为final,则该类所有的方法都是final的。Java编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大,具体参见Jav...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,CentOS7官方镜像安装Oracle11G
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS关闭SELinux安全模块