jmcnamara / rust_xlsxwriter

A Rust library for creating Excel XLSX files.
https://crates.io/crates/rust_xlsxwriter
Apache License 2.0
316 stars 25 forks source link

How to write unit data based on vec or json values? #36

Closed songlinshu closed 1 year ago

songlinshu commented 1 year ago

Question

How to write unit data based on vec or json values?

 let mut compyinfo = c1
            .map(|row: MssqlRow| DetailJson {
                areaDesc: area_Desc.to_string(),
                // areaDesc: row.get::<String,&str>("areaDesc").parse::<f64>().unwrap(),
                streetDesc: row.get::<String, &str>("streetDesc"),
                creditCode: row.get("creditCode"),
                companyName: row.get("companyName"),
                assetsTotalCurrentYear: row
                    .get::<String, &str>("assetsTotalCurrentYear")
                    .parse::<f64>()
                    .unwrap(),
                assetsOverSamePeriodLastYear: row
                    .get::<String, &str>("assetsOverSamePeriodLastYear")
                    .parse::<f64>()
                    .unwrap(),
                assetsBankDepositsCurrentYear: row
                    .get::<String, &str>("assetsBankDepositsCurrentYear")
                    .parse::<f64>()
                    .unwrap(),
                assetsBankOverSamePeriodLastYear: row
                    .get::<String, &str>("assetsBankOverSamePeriodLastYear")
                    .parse::<f64>()
                    .unwrap(),
                debtTotalCurrentYear: row
                    .get::<String, &str>("debtTotalCurrentYear")
                    .parse::<f64>()
                    .unwrap(),
                debtOverSamePeriodLastYear: row
                    .get::<String, &str>("debtOverSamePeriodLastYear")
                    .parse::<f64>()
                    .unwrap(),
                debtLoanFinancingCurrentYear: row
                    .get::<String, &str>("debtLoanFinancingCurrentYear")
                    .parse::<f64>()
                    .unwrap(),
                debtLoanOverSamePeriodLastYear: row
                    .get::<String, &str>("debtLoanOverSamePeriodLastYear")
                    .parse::<f64>()
                    .unwrap(),
                netAssetTotalCurrentYear: row
                    .get::<String, &str>("netAssetTotalCurrentYear")
                    .parse::<f64>()
                    .unwrap(),
                netAssetOverSamePeriodLastYear: row
                    .get::<String, &str>("netAssetOverSamePeriodLastYear")
                    .parse::<f64>()
                    .unwrap(),
                dabrCurrentYear: row
                    .get::<String, &str>("dabrCurrentYear")
                    .parse::<f64>()
                    .unwrap(),
                dabrOverSamePeriodLastYear: row
                    .get::<String, &str>("dabrOverSamePeriodLastYear")
                    .parse::<f64>()
                    .unwrap(),
                businessIncomeTotalCurrentYear: row
                    .get::<String, &str>("businessIncomeTotalCurrentYear")
                    .parse::<f64>()
                    .unwrap(),
                businessIncomeRentOverSamePeriodLastYear: row
                    .get::<String, &str>("businessIncomeRentOverSamePeriodLastYear")
                    .parse::<f64>()
                    .unwrap(),
                businessIncomeRentCurrentYear: row
                    .get::<String, &str>("businessIncomeRentCurrentYear")
                    .parse::<f64>()
                    .unwrap(),
                businessIncomeOverSamePeriodLastYear: row
                    .get::<String, &str>("businessIncomeOverSamePeriodLastYear")
                    .parse::<f64>()
                    .unwrap(),
                profitTotalCurrentYear: row
                    .get::<String, &str>("profitTotalCurrentYear")
                    .parse::<f64>()
                    .unwrap(),
                profitOverSamePeriodLastYear: row
                    .get::<String, &str>("profitOverSamePeriodLastYear")
                    .parse::<f64>()
                    .unwrap(),
                netProfitTotalCurrentYear: row
                    .get::<String, &str>("netProfitTotalCurrentYear")
                    .parse::<f64>()
                    .unwrap(),
                netProfitOverSamePeriodLastYear: row
                    .get::<String, &str>("netProfitOverSamePeriodLastYear")
                    .parse::<f64>()
                    .unwrap(),
                payingTaxTotalCurrentYear: row
                    .get::<String, &str>("payingTaxTotalCurrentYear")
                    .parse::<f64>()
                    .unwrap(),
                payingTaxOverSamePeriodLastYear: row
                    .get::<String, &str>("payingTaxOverSamePeriodLastYear")
                    .parse::<f64>()
                    .unwrap(),
                stockholderBonusTotalCurrentYear: row
                    .get::<String, &str>("stockholderBonusTotalCurrentYear")
                    .parse::<f64>()
                    .unwrap(),
                stockholderBonusOverSamePeriodLastYear: row
                    .get::<String, &str>("stockholderBonusOverSamePeriodLastYear")
                    .parse::<f64>()
                    .unwrap(),
            })
            .fetch_all(&pool)
            .await?;
        pool.close();
        detailJson1.append(&mut compyinfo);
jmcnamara commented 1 year ago

I think the best approach would be to loop over the vec or JSON values and write them out cell by cell. There isn't currently a write_column(row, col, vec) method but there is one in progress. #16

songlinshu commented 1 year ago

Thank you ! Expect this feature ,write_column

jmcnamara commented 1 year ago

Ok. If you want, and know how, you can use the version from GitHub. Otherwise this will be in the next release v0.39.0 in a few days. Closing this as a duplicate of #16. Add a +1 over there for updates.