如何将excel表中的空值转换成有效值呢?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将excel表中的空值转换成有效值呢?相关的知识,希望对你有一定的参考价值。
参考技术Aexcel空值表示:B列利用if判定,如果单元格为空值,则不显示,否则显示A列单元格值=if(A1="","",A1)在公式中,判定空值,可以用“”来表示。
可以用isblank来表示但是这个是你压根没有输入任何东西才会显示为true,如果是你测试的单元格输入了空格或者用了公式后后显示为“”的,那都不是真的空,测试会出现true。
=ISBLANK(B1)。
=IF(B1="",TRUE,FALSE)。
=NOT(ISBLANK(B1))不为空。
=IF(B1="",“空”,“非空”)。
空值的运用
若要在查询中测试空值,请在 WHERE 子句中使用 IS NULL 或 IS NOT NULL。在 SQL Server Management Studio 代码编辑器中查看查询结果时,空值在结果集中显示为 NULL。
可通过下列方法在列中插入空值:在 INSERT 或 UPDATE 语句中显式声明 NULL,或不让列出现在 INSERT 语句中,或使用 ALTER TABLE 语句在现有表中新添一列。空值无法用于将表中的一行与另一行区分开所需的信息(例如主键)。
如何使用NSwag防止查询字符串中的空值
我使用NSwag
生成TypeScript代码。当我在Web API中使用可为null的int时,生成的nswag代码将发送null。
如何防止NSwag
生成此代码或允许.NET Core 3.1将其接受为有效值?
http://localhost:4000/api/SurveyManagement/UpdateRouteSurvey?toSurveyId=null
生成的TypeScript代码:
updateRouteSurvey(toSurveyId: number | null): Observable<void>
let url_ = this.baseUrl + "/api/SurveyManagement/UpdateRouteSurvey?";
if (toSurveyId === undefined)
throw new Error("The parameter 'toSurveyId' must be defined.");
else
url_ += "toSurveyId=" + encodeURIComponent("" + toSurveyId) + "&";
url_ = url_.replace(/[?&]$/, "");
...
C#API接口
[HttpPost(nameof(UpdateRouteSurvey))]
public async Task UpdateRouteSurvey(int? toSurveyId) =>
await _manageSurveyService.UpdateRouteSurvey(toSurveyId);
NSwag配置
"openApiToTypeScriptClient":
"className": "controllerClient",
"moduleName": "",
"namespace": "",
"typeScriptVersion": 2.7,
"template": "Angular",
"promiseType": "Promise",
"httpClass": "HttpClient",
"useSingletonProvider": false,
"injectionTokenType": "InjectionToken",
"rxJsVersion": 6.0,
"dateTimeType": "Date",
"nullValue": "Null",
"generateClientClasses": true,
"generateClientInterfaces": false,
"generateOptionalParameters": false,
"exportTypes": true,
"wrapDtoExceptions": false,
"exceptionClass": "SwaggerException",
"clientBaseClass": null,
"wrapResponses": false,
"wrapResponseMethods": [],
"generateResponseClasses": true,
"responseClass": "SwaggerResponse",
"protectedMethods": [],
"configurationClass": null,
"useTransformOptionsMethod": false,
"useTransformResultMethod": false,
"generateDtoTypes": true,
"operationGenerationMode": "MultipleClientsFromOperationId",
"markOptionalProperties": false,
"generateCloneMethod": false,
"typeStyle": "Interface",
"classTypes": [],
"extendedClasses": [],
"extensionCode": null,
"generateDefaultValues": false,
"excludedTypeNames": [],
"excludedParameterNames": [],
"handleReferences": false,
"generateConstructorInterface": true,
"convertConstructorInterfaceData": false,
"importRequiredTypes": true,
"useGetBaseUrlMethod": false,
"baseUrlTokenName": "API_BASE_URL",
"queryNullValue": "",
"inlineNamedDictionaries": false,
"inlineNamedAny": false,
"templateDirectory": null,
"typeNameGeneratorType": null,
"propertyNameGeneratorType": null,
"enumNameGeneratorType": null,
"serviceHost": null,
"serviceSchemes": null,
我找到了创建正确的空处理的解决方案。
使用NSwag
,可以定义自己的模板。首先在nswag.config
中设置模板目录,然后在此目录中创建一个文件Client.RequestUrl.liquid
,其内容如下:>
let url_ = this.baseUrl + "/ operation.Path % if operation.HasQueryParameters %?% endif %";
% for parameter in operation.PathParameters -%
% if parameter.IsRequired -%
if ( parameter.VariableName === undefined || parameter.VariableName === null)
throw new Error("The parameter ' parameter.VariableName ' must be defined.");
% else -%
if ( parameter.VariableName !== null && parameter.VariableName !== undefined)
% endif -%
% if parameter.IsDateOrDateTimeArray -%
url_ = url_.replace(" "" parameter.Name ", encodeURIComponent( parameter.VariableName .map(s_ => s_ ? s_.toJSON() : "null").join()));
% elseif parameter.IsDateOrDateTime -%
url_ = url_.replace(" "" parameter.Name ", encodeURIComponent( parameter.VariableName ? "" + parameter.VariableName .toJSON() : "null"));
% elseif parameter.IsArray -%
url_ = url_.replace(" "" parameter.Name ", encodeURIComponent( parameter.VariableName .join()));
% else -%
url_ = url_.replace(" "" parameter.Name ", encodeURIComponent("" + parameter.VariableName ));
% endif -%
% if parameter.IsOptional -%
else
url_ = url_.replace("/ "" parameter.Name ", "");
% endif -%
% endfor -%
% for parameter in operation.QueryParameters -%
% if parameter.IsRequired -%
% if parameter.IsNullable -%
if ( parameter.VariableName === undefined)
throw new Error("The parameter ' parameter.VariableName ' must be defined.");
else
% else -%
if ( parameter.VariableName === undefined || parameter.VariableName === null)
throw new Error("The parameter ' parameter.VariableName ' must be defined and cannot be null.");
else
% endif -%
% else -%
% if parameter.IsNullable -%
if ( parameter.VariableName !== undefined)
% else -%
if ( parameter.VariableName === null)
throw new Error("The parameter ' parameter.VariableName ' cannot be null.");
else if ( parameter.VariableName !== undefined)
% endif -%
% endif -%
% if parameter.IsDateOrDateTimeArray -%
parameter.VariableName && parameter.VariableName .forEach(item_ => url_ += " parameter.Name =" + encodeURIComponent(item_ ? "" + item_.toJSON() : "null") + "&"; );
% elseif parameter.IsObjectArray -%
parameter.VariableName && parameter.VariableName .forEach((item, index) =>
for (let attr in item)
if (item.hasOwnProperty(attr))
url_ += " parameter.Name [" + index + "]." + attr + "=" + encodeURIComponent("" + (<any>item)[attr]) + "&";
);
% elseif parameter.IsDateOrDateTime -%
url_ += " parameter.Name =" + encodeURIComponent( parameter.VariableName ? "" + parameter.VariableName .toJSON() : " QueryNullValue ") + "&";
% elseif parameter.IsArray -%
parameter.VariableName && parameter.VariableName .forEach(item => url_ += " parameter.Name =" + encodeURIComponent("" + item) + "&"; );
% else -%
url_ += " parameter.Name =" + ( parameter.VariableName !== null ? encodeURIComponent("" + parameter.VariableName ) : '') + "&";
% endif -%
% endfor -%
url_ = url_.replace(/[?&]$/, "");
以上是关于如何将excel表中的空值转换成有效值呢?的主要内容,如果未能解决你的问题,请参考以下文章