0

すべてのフィールドがvarchar文字列であるSQLクエリの結果をエクスポートしています。レポートで使用するためにすべての文字を保持する必要がある、文字、建物番号、部屋番号が含まれる場合と含まれない場合があるシリアル番号などのフィールド。たとえば、シリアル番号0129306201100910は1.29306E + 14に切り捨てられ、データが使用できなくなります。これが、エクスポートの実際の書き込みを行うために使用しているコードです。先行ゼロを維持し、科学的記数法の切り捨てを停止するためにこれを変更する方法に関する提案はありますか?前もって感謝します。

wr.write("\"Inventory_No\",\"Building_No\",\"Actual_Building\",\"Room_No\",\"Actual_Room\",\"CDDEPT\",\"Location\",\"Actual_Location\",\"Normalized_MFG\""
                        + ",\"Manufacturer\",\"Normalized_Model\",\"Model\",\"Serial Code\""
                        + ",\"Cost\",\"Account_No\",\"Active\"");
                wr.newLine();
                int count = 0;
                while (rs.next()) {
                    count += 1;
                    if (count % 1000 == 0) {
                        wr.flush();
                        response.flushBuffer();
                    }
                    wr.write("\"" + rs.getString("Inventory_No") + "\",");
                    wr.write("\"" + rs.getString("Building_No") + "\",");
                    wr.write("\"" + rs.getString("Actual_Building") + "\",");
                    wr.write("\"" + rs.getString("Room_No") + "\",");
                    wr.write("\"" + rs.getString("Actual_Room") + "\",");
                    wr.write("\"" + rs.getString("CDDEPT") + "\",");
                    wr.write("\"" + rs.getString("Location") + "\",");
                    wr.write("\"" + rs.getString("Actual_Location") + "\",");
                    wr.write("\"" + rs.getString("Normalized_MFG") + "\",");
                    wr.write("\"" + rs.getString("Manufacturer_Name") + "\",");
                    wr.write("\"" + rs.getString("Normalized_Model") + "\",");
                    wr.write("\"" + rs.getString("Name") + "\",");
                    wr.write("\"" + rs.getString("Serial_Code") + "\",");
                    wr.write("\"" + rs.getString("Cost") + "\",");
                    wr.write("\"" + rs.getString("Account_No") + "\",");
                    wr.write("\"" + rs.getString("Active") + "\",");
                    wr.newLine();
                }
4

3 に答える 3

0

csvライターがセルを「テキスト」としてフォーマットしていることを確認してください。これにより、科学的記数法を無効にするテキストとしてセルが書き込まれます。

セルをダブルクリックすると、現在のコードで完全な値が表示されます。

于 2011-12-15T17:40:38.933 に答える
0

MySQLには、独自のCSVファイルを作成する機能があります。このような:

SELECT a,b,a+b INTO OUTFILE '/tmp/result.text' 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
FROM test_table; 

したがって、独自のSQL関数を使用して、CSVにエクスポートする適切な値を設定できます。そして、このファイルをサーバーにダウンロードします。

この操作のドキュメントは、SELECTMySQLで入手できます。

この助けを願っています

于 2011-12-15T17:51:30.657 に答える
0

スーパーCSVなどのライブラリを使用することをお勧めします

于 2011-12-15T21:12:11.090 に答える