C#学习笔记4月第四周
本周笔记-阅读大纲:1.解决git 提交报fatal: unable to access ‘ ‘: The requested URL returned error: 403 错
2.C#生成Guid的几种方式
3.使用七牛云上传文件报错incorrect region, please use up-z1.qiniup.com
4.C# 之 Int16 Int32 Int64 的区别
5.C# List泛型集合中的GroupBy<>用法
6.上传Excel转换成DataTable方法
## 解决git 提交报fatal: unable to access ‘ ‘: The requested URL returned error: 403 错
最近用Git提交代码时,一直报如标题所示的错误。百度了很多都无法解决,包括改更改配置,SSh等。最后在一个论坛上,说可能之前输入的账号或密码有误。尝试后,完美解决。
解决方法:
找到如下图的位置:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210421182352763.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNzMyMzM2,size_16,color_FFFFFF,t_70)
可以在控制面版里删除windows保存的账号密码,即这里的操作是,点击“从保管库中删除”,我删除之后再次提交时,就可以再次输入账号密码了,输入正确的账号密码之后再推送就不报错了。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210421182521815.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNzMyMzM2,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210421182511518.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNzMyMzM2,size_16,color_FFFFFF,t_70)
## C#生成Guid的几种方式
```csharp
1. var uuid = Guid.NewGuid().ToString(); // 9af7f46a-ea52-4aa3-b8c3-9fd484c2af12
2. var uuidN = Guid.NewGuid().ToString("N"); // e0a953c3ee6040eaa9fae2b667060e09
3. var uuidD = Guid.NewGuid().ToString("D"); // 9af7f46a-ea52-4aa3-b8c3-9fd484c2af12
4. var uuidB = Guid.NewGuid().ToString("B"); // {734fd453-a4f8-4c5d-9c98-3fe2d7079760}
5. var uuidP = Guid.NewGuid().ToString("P"); // (ade24d16-db0f-40af-8794-1e08e2040df3)
6. var uuidX = Guid.NewGuid().ToString("X"); // {0x3fa412e3,0x8356,0x428f,{0xaa,0x34,0xb7,0x40,0xda,0xaf,0x45,0x6f}}
```
## 使用七牛云上传文件报错incorrect region, please use up-z1.qiniup.com
>400: {"error":"incorrect region, please use up-z1.qiniup.com"}
### 问题原因:
创建七牛云存储空间时选择了华南地区,但上传文件的配置类中配置了其他地区
### 解决办法:
在配置Configuration类的时候,按需选择Zone的类型即可
>//Zone.zone0:华东
>//Zone.zone1:华北
>//Zone.zone2:华南
>//Zone.zoneNa0:北美
//———http上传,自动识别上传区域——
//Zone.httpAutoZone
//———https上传,自动识别上传区域——
//Zone.httpsAutoZone
//指定上传文件服务器地址:
Configuration cfg = new Configuration(Zone.zone2());
## C# 之 Int16 Int32 Int64 的区别
int16 值类型表示值介于 -32768 到 +32767 之间的有符号整数。
Int32 值类型表示值介于 -2,147,483,648 到 +2,147,483,647 之间的有符号整数。
Int64 值类型表示值介于 -9,223,372,036,854,775,808 到 +9,223,372,036,854,775,807 之间的整数。
----------------------------------------------------------------------------------------------------------------------------
short 关键字表示一种整数数据类型,该类型根据下表显示的大小和范围存储值。
short -32768 到 327687(-2^15 到 2^15-1) 有符号16位整数 System.Int16
int 关键字表示一种整型,该类型根据下表显示的大小和范围存储值。
int -2,147,483,648 到 2,147,483,647(-2^31 到 2^31-1) 有符号32位整数 System.Int32
long 关键字表示一种整型,该类型根据下表显示的大小和范围存储值。
long -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807(-2^63 到 2^63-1) 有符号64位整数 System.Int64
## C# List泛型集合中的GroupBy<>用法
```csharp
var Sample = ListGoods.GroupBy(x => x.GoodsCode+x.GoodsName);
var listgoodinput = new List<GoodsInput>();
foreach (IGrouping<string, ImportGoodDto> info in Sample)
{
List<ImportGoodDto> aggregate = info.ToList<ImportGoodDto>();//分组后的集合
}
```
## 上传Excel转换成DataTable方法
```csharp
/// <summary>
/// 将excel导入到datatable
/// </summary>
/// <param name="filePath">excel路径</param>
/// <param name="isColumnName">第一行是否是列名</param>
/// <returns>返回datatable</returns>
public static DataTable ExcelToDataTable(string filePath, bool isColumnName)
{
DataTable dataTable = null;
FileStream fs = null;
DataColumn column = null;
DataRow dataRow = null;
IWorkbook workbook = null;
ISheet sheet = null;
IRow row = null;
ICell cell = null;
int startRow = 0;
try
{
using (fs = System.IO.File.OpenRead(filePath))
{
// 2007版本
if (filePath.IndexOf(".xlsx") > 0)
workbook = new XSSFWorkbook(fs);
// 2003版本
else if (filePath.IndexOf(".xls") > 0)
workbook = new HSSFWorkbook(fs);
if (workbook != null)
{
sheet = workbook.GetSheetAt(0);//读取第一个sheet,当然也可以循环读取每个sheet
dataTable = new DataTable();
if (sheet != null)
{
int rowCount = sheet.LastRowNum;//总行数
if (rowCount > 0)
{
IRow firstRow = sheet.GetRow(0);//第一行
int cellCount = firstRow.LastCellNum;//列数
//构建datatable的列
if (isColumnName)
{
startRow = 1;//如果第一行是列名,则从第二行开始读取
for (int i = firstRow.FirstCellNum; i < cellCount; ++i)
{
cell = firstRow.GetCell(i);
if (cell != null)
{
if (cell.StringCellValue != null)
{
column = new DataColumn(cell.StringCellValue);
dataTable.Columns.Add(column);
}
}
}
}
else
{
for (int i = firstRow.FirstCellNum; i < cellCount; ++i)
{
column = new DataColumn("column" + (i + 1));
dataTable.Columns.Add(column);
}
}
//填充行
for (int i = startRow; i <= rowCount; ++i)
{
row = sheet.GetRow(i);
if (row == null) continue;
dataRow = dataTable.NewRow();
for (int j = row.FirstCellNum; j < cellCount; ++j)
{
cell = row.GetCell(j);
if (cell == null)
{
dataRow = "";
}
else
{
//CellType(Unknown = -1,Numeric = 0,String = 1,Formula = 2,Blank = 3,Boolean = 4,Error = 5,)
switch (cell.CellType)
{
case CellType.Blank:
dataRow = "";
break;
case CellType.Numeric:
short format = cell.CellStyle.DataFormat;
//对时间格式(2015.12.5、2015/12/5、2015-12-5等)的处理
if (format == 14 || format == 31 || format == 57 || format == 58)
dataRow = cell.DateCellValue;
else
dataRow = cell.NumericCellValue;
break;
case CellType.String:
dataRow = cell.StringCellValue;
break;
}
}
}
dataTable.Rows.Add(dataRow);
}
}
}
}
}
return dataTable;
}
catch (Exception ex)
{
if (fs != null)
{
fs.Close();
}
throw ex;
}
``` 回顾下也不错 学习 学习复习一下。
页:
[1]