首页
归档
留言
友链
广告合作
壁纸
更多
美女主播
Search
1
博瑞GE车机升级/降级
5,647 阅读
2
Mac打印机设置黑白打印
5,042 阅读
3
修改elementUI中el-table树形结构图标
4,945 阅读
4
Mac客户端添加腾讯企业邮箱方法
4,705 阅读
5
intelliJ Idea 2022.2.X破解
4,444 阅读
后端开发
HarmonyOS Next
Web前端
微信开发
开发辅助
App开发
数据库
随笔日记
登录
/
注册
Search
标签搜索
Spring Boot
Java
Vue
Mac
Spring Cloud
MyBatis
WordPress
MacOS
asp.net
Element UI
Nacos
MySQL
.Net
Spring Cloud Alibaba
Mybatis-Plus
Typecho
jQuery
Java Script
IntelliJ IDEA
微信小程序
Laughing
累计撰写
629
篇文章
累计收到
1,421
条评论
首页
栏目
后端开发
HarmonyOS Next
Web前端
微信开发
开发辅助
App开发
数据库
随笔日记
页面
归档
留言
友链
广告合作
壁纸
美女主播
搜索到
629
篇与
的结果
2018-08-07
从腾讯云丢失思考数据备份
8月5日,一则腾讯云服务器丢失初创公司数年数据,造成“近千万元损失”的新闻甚嚣尘上,再次引发市场对数据安全的恐慌。 首先,腾讯作为国内一流的云服务提供厂商,竟然出现这么大的纰漏,我觉得是十分震惊的。其次,该初创公司(不知道多大规模,当时按照千万级的损失,我觉得公司规模也不算太小)竟然没有一点安全措施,完全把数据放到服务器上,对于这个公司的做法,我更是感到吃惊。数据无小事 即便是一个小型公司,基本数据备份的意识我觉得还是应该有的,不论是有自己的服务器(哪怕是一个普通的PC),其实都可以作为自己的文件服务器。或者用自己的SVN、TFS,甚至使用免费的代码管理工具(比如Git),但是这家公司一点都没有。是否涉及其他问题 通过新闻,我们了解到,这家公司在腾讯云17年12月开户至今,一共消费3500多,我不知道这家公司做什么的,也不知道这家公司实际使用了多场时间的云服务器,但是按照消费金额来看,我们不知道3500多元的消费,是如何支撑起1000多万的业务的,所以~
2018年08月07日
1,549 阅读
0 评论
0 点赞
2018-08-02
win10应用商店卸载后恢复方法
打开终端或者powershell,需要注意以管理员身份运行。 在终端中输入以下命令Get-AppXPackage -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"} 然后回车等待安装完成即可。
2018年08月02日
1,285 阅读
0 评论
0 点赞
2018-07-15
关于微信小程序使用wxParse报错: thirdScriptError console.dir is not a function
最近在开发小程序,有一个详细展示的页面,为了展示html代码,调用了wxParse的代码,当时在模拟器上面模拟是没有问题的,但是在我安卓手机(坚果Pro2)上面进行调试时,文章展示html页面,始终是一片空白。当时感觉不对劲,然后拿着我老婆的苹果手机试了一下,没有任何问题。此时,果断打开手机的调试功能,看到错误信息thirdScriptError console.dir is not a function。百度了一下,终于找到了解决办法。解决办法把wxParse插件下的html2json.js里的console.dir注释掉或者替换成console.log。
2018年07月15日
1,378 阅读
0 评论
0 点赞
2018-07-02
sqlserver日期格式化以及间隔天数
select re.orgname as dwmc,re1.orgname as bmmc, zgzd.lszgzd_zgxm as zgxm, Cast(year(cosign.ssrq) as varchar(4)) + '年' +Cast(month(cosign.ssrq) as varchar(2)) + '月' +Cast(day(cosign.ssrq) as varchar(2)) + '日' as ssrq, Cast(year(cosign.zzrq) as varchar(4)) + '年' +Cast(month(cosign.zzrq) as varchar(2)) + '月' +Cast(day(cosign.zzrq) as varchar(2)) + '日' as zzrq from hrcosign cosign left join hrzgzd zgzd on zgzd.hrzgzd_nm = cosign.parentnm left join hrorgrelation re on re.dimensionnm='dd01' and re.parentnm=zgzd.hrzgzd_hrdwnm left join hrorgrelation re1 on re1.dimensionnm='dd01' and re1.parentnm=zgzd.hrzgzd_hrbmnm where contracttype='0' and DateDiff(DAY,Convert(varchar(20),zzrq,23),Convert(varchar(20),getdate(),23)) <= 60
2018年07月02日
1,463 阅读
0 评论
1 点赞
2018-06-24
sublime text3去除编辑python横框
sublime text3 安装完插件后,在编辑py文件时,每行都会出现很多横框,个人感觉很是不爽其实这个是因为安装了anaconda插件而出现这些框框.可以在 Sublime > Preferences > Package Settings > Anaconda > Settings User 中设置关闭:{"anaconda_linting": false}
2018年06月24日
1,211 阅读
0 评论
1 点赞
2018-06-24
Mac 上使用virtualenv 搭建多个Python开发环境
安装virtualenvsudo pip install virtualenv 输入virtualenv检查是否安装成功创建virtualenv创建文件夹mkdir envs下面开始新建不使用系统Python包的虚拟环境:virtualenv --no-site-packages [envs/django] cd envs/django 激活虚拟环境source bin/activate 退出虚拟环境deactivate
2018年06月24日
1,116 阅读
0 评论
1 点赞
2018-05-24
ngrok服务器搭建
必要材料服务器,用来搭建ngrok的服务器,必须有公网ip,并且可以正常访问域名,用来生成访问域名。我用的是腾讯云的Centos7 X64的安装git 和Golangyum install build-essential golang mercurial gitGolang,Go语言支持,因为Ngrok是基于Go语言编写的下载源码,当然也可以不安装git,但是需要手动上传代码到需要的位置此处使用非官方地址,修复了部分包无法获取git clone https://github.com/tutumcloud/ngrok.git ngrok生成自签名证书使用ngrok.com官方服务时,我们使用的是官方的SSL证书。自建ngrokd服务,如果不想买SSL证书,我们需要生成自己的自签名证书,并编译一个携带该证书的ngrok客户端。证书生成过程需要一个NGROK_BASE_DOMAIN。如果你要提供服务的地址为“example.ngrok.xxx.com”,那NGROK_BASE_DOMAIN就应该 是“ngrok.xxx.com”。这里我使用自己的域名“ide.net.cn”。cd ngrok NGROK_DOMAIN="ide.net.cn" openssl genrsa -out base.key 2048 openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pem openssl genrsa -out server.key 2048 openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt 执行完成后需要替换证书cp base.pem assets/client/tls/ngrokroot.crt 编译make release-server release-client 编译成功后会在bin目录下找到ngrokd和ngrok这两个文件。其中ngrokd 就是服务端程序了。启动服务端./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="ide.net.cn" -httpAddr=":80" -httpsAddr=":443"httpAddr、httpsAddr 分别是 ngrok 用来转发 http、https 服务的端口,可以随意指定。ngrokd 还会开一个 4443 端口用来跟客户端通讯(可通过 -tunnelAddr=”:xxx” 指定)。由于微信限制不能出现端口号,因此这个使用了80、443端口。编译客户端windowsGOOS=windows GOARCH=amd64 make release-client macGOOS=darwin GOARCH=amd64 make release-client 执行对应的命令会在bin目录下生成相对应的windows、mac目录,ngrok.exe就存放在对应目录下。将对应的ngrok.exe下载到本地。设置本地客户端在同级目录下新建一个配置文件ngrok.cfgserver_addr: "ide.net.cn:4443" trust_host_root_certs: false同级目录下新建一个启动脚本startup.bat@echo on cd %cd% #ngrok -proto=tcp 22 #ngrok start web ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=yjc 8080 其中,-config指向配置文件,-log存放日志文件位置,-subdomain为自定义的域名前缀。8080为端口号。启动,点击启动脚本startup.bat完成启动。设置为系统程序,并后台运行。服务器在运行ngrok时,如果关闭会话窗口,会导致服务中断,很显然这不是我们想要的结果,我们需要服务不断的在后台运行,当需要的时候在停止。在/etc/systemd/system/目录下创建服务ngrok.service,内容为[Unit] Description=ngrok After=network.target [Service] ExecStart=/myweb/ngrok/bin/ngrokd -tlsKey=/myweb/ngrok/server.key -tlsCrt=/myweb/ngrok/server.crt -domain="ide.net.cn" -httpAddr=":80" -httpsAddr=":443" [Install] WantedBy=multi-user.target 其中要根据自己的实际目录修改相对应的目录。这样我们就可以了通过systemctl start ngrok.service启动服务。然后就可以愉快的玩耍了。温馨提示上面设置启动脚本的我一直没成功,我是通过下面命令使用后台服务进行了,关闭窗口同样不会导致服务退出setsid ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="ide.net.cn" -httpAddr=":80" -httpsAddr=":443"
2018年05月24日
1,253 阅读
0 评论
1 点赞
2018-05-16
NPOI设置列宽、行高、下拉列表等信息
using Genersoft.Platform.Controls.WinForms; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using NPOI.HSSF.UserModel; using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Text; using System.Collections; using Genersoft.GS.HIS.ZW.SPI; using NPOI.HSSF.Util; using NPOI.SS.Util; namespace Genersoft.GS.HIS.ZW.Controller { public class ExcelHelper : IDisposable { #region 变量属性 private IWorkbook workbook = null; private FileStream fs = null; private bool disposed; private string fileName = string.Empty; #endregion #region 构造函数 public ExcelHelper() { disposed = false; } #endregion #region 方法 #region 将DataTable数据导入到excel中 /// <summary> /// 将DataTable数据导入到excel中 /// </summary> /// <param name="data">要导入的数据</param> /// <param name="isColumnWritten">DataTable的列名是否要导入</param> /// <param name="sheetName">要导入的excel的sheet的名称</param> /// <returns>导入数据行数(包含列名那一行)</returns> public int DataTableToExcel(DataTable data, string sheetName, bool isColumnWritten, out string fileName) { int i = 0; int j = 0; int count = 0; ISheet sheet = null; fileName = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop) + "\\" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls"; ; //文件名 fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite); if (fileName.IndexOf(".xlsx") > 0) // 2007版本 workbook = new XSSFWorkbook(); else if (fileName.IndexOf(".xls") > 0) // 2003版本 workbook = new HSSFWorkbook(); try { if (workbook != null) { sheet = workbook.CreateSheet(sheetName); } else { return -1; } if (isColumnWritten == true) //写入DataTable的列名 { IRow row = sheet.CreateRow(0); for (j = 0; j < data.Columns.Count; ++j) { row.CreateCell(j).SetCellValue(data.Columns[j].ColumnName); } count = 1; } else { count = 0; } for (i = 0; i < data.Rows.Count; ++i) { IRow row = sheet.CreateRow(count); for (j = 0; j < data.Columns.Count; ++j) { row.CreateCell(j).SetCellValue(data.Rows[i][j].ToString()); } ++count; } workbook.Write(fs); //写入到excel fs.Close(); return count; } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); return -1; } } #endregion #region 将excel中的数据导入到DataTable中 /// <summary> /// 将excel中的数据导入到DataTable中 /// </summary> /// <param name="sheetName">excel工作薄sheet的名称</param> /// <param name="isFirstRowColumn">第一行是否是DataTable的列名</param> /// <returns>返回的DataTable</returns> public DataSet ExcelToDataTable(string sheetName, bool isFirstRowColumn, string excelPath) { DataSet ds = new DataSet(); ISheet sheet = null; DataTable data = new DataTable(); int startRow = 0; try { fs = new FileStream(excelPath, FileMode.Open); long left = fs.Length; byte[] bytes = new byte[1024]; int maxLength = bytes.Length; int start = 0; int num = 0; while (left > 0) { fs.Position = start; num = 0; if (left < maxLength) num = fs.Read(bytes, 0, Convert.ToInt32(left)); else num = fs.Read(bytes, 0, maxLength); if (num == 0) break; start += num; left -= num; } fs.Seek(0, SeekOrigin.Begin); if (excelPath.IndexOf(".xlsx") > 0) // 2007版本 workbook = new XSSFWorkbook(fs); else if (excelPath.IndexOf(".xls") > 0) // 2003版本 workbook = new HSSFWorkbook(fs); if (sheetName != null) { sheet = workbook.GetSheet(sheetName); if (sheet == null) //如果没有找到指定的sheetName对应的sheet,则尝试获取第一个sheet { sheet = workbook.GetSheetAt(0); } } else { sheet = workbook.GetSheetAt(0); } if (sheet != null) { IRow firstRow = sheet.GetRow(0); int cellCount = firstRow.LastCellNum; //一行最后一个cell的编号 即总的列数 if (isFirstRowColumn) { for (int i = firstRow.FirstCellNum; i < cellCount; ++i) { ICell cell = firstRow.GetCell(i); if (cell != null) { string cellValue = cell.StringCellValue; if (cellValue != null) { DataColumn column = new DataColumn(cellValue); data.Columns.Add(column); } } } startRow = sheet.FirstRowNum + 1; } else { startRow = sheet.FirstRowNum; } //最后一列的标号 int rowCount = sheet.LastRowNum; for (int i = startRow; i <= rowCount; ++i) { IRow row = sheet.GetRow(i); if (row == null) continue; //没有数据的行默认是null //处理空行数据 bool isBlankRow = true; for (int j = row.FirstCellNum; j < cellCount; ++j) { if (row.GetCell(j) != null) //对象实例不为null { if (!string.IsNullOrWhiteSpace(row.GetCell(j).ToString()))//判断单元格是否为空 { isBlankRow = false; } } } if (isBlankRow) { continue; } //增加行数据 DataRow dataRow = data.NewRow(); for (int j = row.FirstCellNum; j < cellCount; ++j) { if (row.GetCell(j) != null) //同理,没有数据的单元格都默认是null dataRow[j] = row.GetCell(j).ToString(); } data.Rows.Add(dataRow); } } if (data != null) { DataView dv = data.DefaultView; dv.Sort = "合同编号 Asc"; DataTable dtSort = dv.ToTable(); ds.Tables.Add(dtSort); return ds; } else { return null; } } catch (Exception ex) { UMessageBox.Information(ex.Message); return null; } } #endregion #region 将excel中的数据导入到DataTable中 /// <summary> /// 将excel中的数据导入到DataTable中 /// </summary> /// <param name="sheetName">excel工作薄sheet的名称</param> /// <param name="isFirstRowColumn">第一行是否是DataTable的列名</param> /// <returns>返回的DataTable</returns> public DataSet BDExcelToDataTable(string sheetName, bool isFirstRowColumn, string excelPath) { DataSet ds = new DataSet(); ISheet sheet = null; DataTable data = new DataTable(); int startRow = 0; try { fs = new FileStream(excelPath, FileMode.Open); long left = fs.Length; byte[] bytes = new byte[1024]; int maxLength = bytes.Length; int start = 0; int num = 0; while (left > 0) { fs.Position = start; num = 0; if (left < maxLength) num = fs.Read(bytes, 0, Convert.ToInt32(left)); else num = fs.Read(bytes, 0, maxLength); if (num == 0) break; start += num; left -= num; } fs.Seek(0, SeekOrigin.Begin); if (excelPath.IndexOf(".xlsx") > 0) // 2007版本 workbook = new XSSFWorkbook(fs); else if (excelPath.IndexOf(".xls") > 0) // 2003版本 workbook = new HSSFWorkbook(fs); if (sheetName != null) { sheet = workbook.GetSheet(sheetName); if (sheet == null) //如果没有找到指定的sheetName对应的sheet,则尝试获取第一个sheet { sheet = workbook.GetSheetAt(0); } } else { sheet = workbook.GetSheetAt(0); } if (sheet != null) { IRow firstRow = sheet.GetRow(0); int cellCount = firstRow.LastCellNum; //一行最后一个cell的编号 即总的列数 if (isFirstRowColumn) { for (int i = firstRow.FirstCellNum; i < cellCount; ++i) { ICell cell = firstRow.GetCell(i); if (cell != null) { string cellValue = cell.StringCellValue; if (cellValue != null) { DataColumn column = new DataColumn(cellValue); data.Columns.Add(column); } } } startRow = sheet.FirstRowNum + 1; } else { startRow = sheet.FirstRowNum; } //最后一列的标号 int rowCount = sheet.LastRowNum; for (int i = startRow; i <= rowCount; ++i) { IRow row = sheet.GetRow(i); if (row == null) continue; //没有数据的行默认是null //处理空行数据 bool isBlankRow = true; for (int j = row.FirstCellNum; j < cellCount; ++j) { if (row.GetCell(j) != null) //对象实例不为null { if (!string.IsNullOrWhiteSpace(row.GetCell(j).ToString()))//判断单元格是否为空 { isBlankRow = false; } } } if (isBlankRow) { continue; } //增加行数据 DataRow dataRow = data.NewRow(); for (int j = row.FirstCellNum; j < cellCount; ++j) { if (row.GetCell(j) != null) //同理,没有数据的单元格都默认是null dataRow[j] = row.GetCell(j).ToString(); } data.Rows.Add(dataRow); } } if (data != null) { DataView dv = data.DefaultView; DataTable dtSort = dv.ToTable(); ds.Tables.Add(dtSort); return ds; } else { return null; } } catch (Exception ex) { UMessageBox.Information(ex.Message); return null; } } #endregion #region 将DataTable数据导入到excel中 /// <summary> /// 将DataTable数据导入到excel中 /// </summary> /// <param name="data">要导入的数据</param> /// <param name="isColumnWritten">DataTable的列名是否要导入</param> /// <param name="sheetName">要导入的excel的sheet的名称</param> /// <returns>导入数据行数(包含列名那一行)</returns> public int DataTableToExcelForDirectory(DataTable data, string sheetName, bool isColumnWritten, string fileName, DJType type, string description = "") { int i = 0; int j = 0; int count = 0; ISheet sheet = null; fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite); if (fileName.IndexOf(".xlsx") > 0) // 2007版本 workbook = new XSSFWorkbook(); else if (fileName.IndexOf(".xls") > 0) // 2003版本 workbook = new HSSFWorkbook(); try { if (workbook != null) { sheet = workbook.CreateSheet(sheetName); } else { return -1; } if (!string.IsNullOrEmpty(description))//添加描述信息 { IRow row = sheet.CreateRow(count); ICellStyle cellStyle = workbook.CreateCellStyle(); ICell cell = row.CreateCell(0); cell.SetCellValue(description); cellStyle.WrapText = true;//自动换行 cellStyle.BorderBottom = cellStyle.BorderLeft = cellStyle.BorderRight = cellStyle.BorderTop = BorderStyle.Thin; cell.CellStyle = cellStyle; sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(count, count, 0, data.Columns.Count - 1)); row.Height = 30 * 20; count++; } if (isColumnWritten == true) //写入DataTable的列名 { IRow row = sheet.CreateRow(count); IDataFormat format = workbook.CreateDataFormat(); for (j = 0; j < data.Columns.Count; ++j) { ICell cell = row.CreateCell(j); ICellStyle cellStyle = workbook.CreateCellStyle(); if (data.Columns[j].DataType.ToString() == "System.Decimal") { cellStyle.DataFormat = format.GetFormat("0.00"); } else { cellStyle.DataFormat = format.GetFormat("@"); } HSSFFont ffont = (HSSFFont)workbook.CreateFont(); ffont.FontHeight = 16 * 16; ffont.FontName = "宋体"; cellStyle.SetFont(ffont); cellStyle.BorderBottom = cellStyle.BorderLeft = cellStyle.BorderRight = cellStyle.BorderTop = BorderStyle.Thin; cell.CellStyle = cellStyle; cell.SetCellValue(data.Columns[j].ColumnName); row.Cells[j] = cell; /*设置列宽*/ sheet.SetColumnWidth(j, (data.Columns[j].ColumnName.Length) * 3 * 256); switch (type) { case DJType.JXCZWPZInfo: if (data.Columns[j].ColumnName.Trim().ToUpper() == "业务分类") { //设置生成下拉框的行和列 var cellRegions = new CellRangeAddressList(count++, 65535, j, j); //设置 下拉框内容 DVConstraint constraint = DVConstraint.CreateExplicitListConstraint( new string[] { "入库", "出库" }); //绑定下拉框和作用区域,并设置错误提示信息 HSSFDataValidation dataValidate = new HSSFDataValidation(cellRegions, constraint); dataValidate.CreateErrorBox("输入不合法", "请输入下拉列表中的值。"); dataValidate.ShowPromptBox = true; sheet.AddValidationData(dataValidate); } break; case DJType.DBZWPZInfo: if (data.Columns[j].ColumnName.Trim().ToUpper() == "业务分类") { //设置生成下拉框的行和列 var cellRegions = new CellRangeAddressList(count++, 65535, j, j); //设置 下拉框内容 DVConstraint constraint = DVConstraint.CreateExplicitListConstraint( new string[] { "调拨" }); //绑定下拉框和作用区域,并设置错误提示信息 HSSFDataValidation dataValidate = new HSSFDataValidation(cellRegions, constraint); dataValidate.CreateErrorBox("输入不合法", "请输入下拉列表中的值。"); dataValidate.ShowPromptBox = true; sheet.AddValidationData(dataValidate); } break; case DJType.SRZWPZInfo: if (data.Columns[j].ColumnName.Trim().ToUpper() == "业务分类") { //设置生成下拉框的行和列 var cellRegions = new CellRangeAddressList(count++, 65535, j, j); //设置 下拉框内容 DVConstraint constraint = DVConstraint.CreateExplicitListConstraint( new string[] { "门诊收入", "住院收入" }); //绑定下拉框和作用区域,并设置错误提示信息 HSSFDataValidation dataValidate = new HSSFDataValidation(cellRegions, constraint); dataValidate.CreateErrorBox("输入不合法", "请输入下拉列表中的值。"); dataValidate.ShowPromptBox = true; sheet.AddValidationData(dataValidate); } break; case DJType.FYZWPZInfo: if (data.Columns[j].ColumnName.Trim().ToUpper() == "业务分类") { //设置生成下拉框的行和列 var cellRegions = new CellRangeAddressList(count++, 65535, j, j); //设置 下拉框内容 DVConstraint constraint = DVConstraint.CreateExplicitListConstraint( new string[] { "门诊收入", "住院收入" }); //绑定下拉框和作用区域,并设置错误提示信息 HSSFDataValidation dataValidate = new HSSFDataValidation(cellRegions, constraint); dataValidate.CreateErrorBox("输入不合法", "请输入下拉列表中的值。"); dataValidate.ShowPromptBox = true; sheet.AddValidationData(dataValidate); } break; } if (data.Columns[j].ColumnName.Trim().ToUpper() == "推送状态") { //设置生成下拉框的行和列 var cellRegions = new CellRangeAddressList(count++, 65535, j, j); //设置 下拉框内容 DVConstraint constraint = DVConstraint.CreateExplicitListConstraint( new string[] { "新增", "编辑", "删除" }); //绑定下拉框和作用区域,并设置错误提示信息 HSSFDataValidation dataValidate = new HSSFDataValidation(cellRegions, constraint); dataValidate.CreateErrorBox("输入不合法", "请输入下拉列表中的值。"); dataValidate.ShowPromptBox = true; sheet.AddValidationData(dataValidate); } } count++; } for (i = 0; i < data.Rows.Count; ++i) { IRow row = sheet.CreateRow(count); for (j = 0; j < data.Columns.Count; ++j) { ICell cell = row.CreateCell(j); cell.SetCellValue(data.Rows[i][j].ToString()); ICellStyle cellStyle = workbook.CreateCellStyle(); IDataFormat format = workbook.CreateDataFormat(); cellStyle.BorderBottom = cellStyle.BorderLeft = cellStyle.BorderRight = cellStyle.BorderTop = BorderStyle.Thin; if (data.Columns[j].DataType.ToString() == "System.Decimal") { cellStyle.DataFormat = format.GetFormat("0.00"); } else { cellStyle.DataFormat = format.GetFormat("@"); } HSSFFont ffont = (HSSFFont)workbook.CreateFont(); ffont.FontHeight = 14 * 14; ffont.FontName = "宋体"; cellStyle.SetFont(ffont); cell.CellStyle = cellStyle; cell.SetCellValue(data.Columns[j].ColumnName); row.Cells[j] = cell; } ++count; } workbook.Write(fs); //写入到excel fs.Close(); return count; } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); return -1; } } #endregion #region 资源释放方法 public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (!this.disposed) { if (disposing) { if (fs != null) fs.Close(); } fs = null; disposed = true; } } #endregion #region 检查DataTable列是否存在 /// <summary> /// 检查DataTable列是否存在 /// </summary> /// <param name="dataTable"></param> /// <param name="arrayList"></param> public static bool CheckColumn(DataTable dataTable, ArrayList arrayList, out string message) { message = ""; foreach (var item in arrayList) { if (!dataTable.Columns.Contains(item.ToString())) { message = "列 【" + item.ToString() + "】不存在,请检查!"; return false; } } return true; } #endregion #endregion } }
2018年05月16日
1,579 阅读
0 评论
0 点赞
2018-05-16
DataTable高效判断是否存在重复的数据
private void CheckDataRepeat(DataSet dataSet, out string message) { message = string.Empty; DataView dv = new DataView(dataSet.Tables[0]); DataTable dtBmzd = null; dtBmzd = dv.ToTable(true, new string[] { "列名1", "列名2" }); if (dtBmzd.Rows.Count < dataSet.Tables[0].Rows.Count) { message += "【列名1】、【列名2】值必须唯一,Excel中存在重复的数据,请确认!\n"; } }
2018年05月16日
1,265 阅读
0 评论
0 点赞
2018-04-23
nginx:[emerg]unknown directive "ssl"
在centos中,配置nginx的https时,出现如下错误。nginx: [emerg] unknown directive "ssl" in /usr/local/nginx/conf/nginx.conf:102到解压的nginx目录下./configure --with-http_ssl_module当执行上面语句,出现./configure: error: SSL modules require the OpenSSL library.用yum -y install openssl openssl-devel再执行./configure重新执行./configure --with-http_ssl_modulemake切记不能make install会覆盖。把原来nginx备份cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak把新的nginx覆盖旧的cp objs/nginx /usr/local/nginx/sbin/nginx出现错误时cp: cannot create regular file ‘/usr/local/nginx/sbin/nginx’: Text file busy用cp -rfp objs/nginx /usr/local/nginx/sbin/nginx测试nginx是否正确/usr/local/nginx/sbin/nginx -t(nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful)重启nginx/usr/local/nginx/sbin/nginx -s reload
2018年04月23日
1,420 阅读
0 评论
1 点赞
2018-04-17
CentOS7 64位下MySQL5.7安装与配置(YUM)
配置YUM源MySQL YUM源下载地址在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum/下载mysql源安装包shell> wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm安装mysql源shell> yum localinstall mysql57-community-release-el7-8.noarch.rpm检查mysql源是否安装成功shell> yum repolist enabled | grep "mysql.*-community.*"检查mysql源安装是否正确可以修改vim /etc/yum.repos.d/mysql-community.repo源,改变默认安装的mysql版本。比如要安装5.6版本,将5.7源的enabled=1改成enabled=0。然后再将5.6源的enabled=0改成enabled=1即可。安装MySQLshell> yum install mysql-community-server启动MySQL服务shell> systemctl start mysqld查看MySQL的启动状态shell> systemctl status mysqld开机启动shell> systemctl enable mysqld shell> systemctl daemon-reload修改root本地登录密码mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码。通过下面的方式找到root默认密码,然后登录mysql进行修改:shell> grep 'temporary password' /var/log/mysqld.logroot默认密码shell> mysql -uroot -p mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';或者mysql> set password for 'root'@'localhost'=password('MyNewPass4!');注意:mysql5.7默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。否则会提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements错误。通过msyql环境变量可以查看密码策略的相关信息:mysql> show variables like '%password%';mysql默认编码默认配置文件路径:配置文件:/etc/my.cnf日志文件:/var/log//var/log/mysqld.log服务启动脚本:/usr/lib/systemd/system/mysqld.servicesocket文件:/var/run/mysqld/mysqld.pid
2018年04月17日
1,398 阅读
0 评论
0 点赞
2018-04-03
有一种会员叫优酷的体验会员
自从优酷土豆合并以后,土豆几乎没动静了,其实优酷的影响力感觉这是越来越少了。阿里入主之后,感觉优酷的App很好的继承了阿里系臃肿、卡顿的特性。为什么会有优酷体验会员 这个优酷体验会员是前几天淘宝买东西送的,本来优酷我就很少用,一般都是腾讯视频会员,恰逢这几天腾讯视频会员过期了,本来是想看一下今年(额,去年)的贺岁片的。所以随手就领取了优酷体验会员的体验 想着领了会员看一下VIP电影的,随手打开了一个祖宗十九代,额,不是打广告。然后看了几分钟,然后你懂的,让我开通会员才能看。当时就无语了,我不是体验会员吗…为什么不能看…也没多想,果断卸载优酷了…
2018年04月03日
1,201 阅读
0 评论
0 点赞
1
...
40
41
42
...
53