如何将excel表中的空值转换成有效值呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将excel表中的空值转换成有效值呢?相关的知识,希望对你有一定的参考价值。

参考技术A

excel空值表示: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表中的空值转换成有效值呢?的主要内容,如果未能解决你的问题,请参考以下文章

如何将EXCEl中多张Sheet工作表转换成一个PDF

如何将EXCEl中多张Sheet工作表转换成一个PDF

pandas 怎么处理表格中的空值

如何将EXCEl中多张Sheet工作表转换成一个PDF

如何将csv文件转换成excel

在sql server数据库中将一个nvarchar类型的空值转换成decimal(18,3)类型