質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

受付中

【Flutter】Excelから取得した文字列の語尾に読み仮名(カタカナ表記)がついてしまう

irohamaru
irohamaru

総合スコア15

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

1回答

0リアクション

0クリップ

336閲覧

投稿2022/09/22 04:19

編集2022/09/22 07:01

前提

Flutterでデスクトップアプリを作っています。
Excelファイルをアプリ画面にドラッグ&ドロップし、別フォーマットのExcelファイルに置き換えて出力します。

イメージ説明
イメージ説明

実現したいこと

  • 元のExcelファイルの各セルの文字列は同じまま、別フォーマットのExcelファイルに置き換えて出力したい

使っているFlutterのライブラリはexcel(2.0.0-null-safety-3)です。
excel

元のExcelファイル
イメージ説明

出力Excelファイル
イメージ説明

発生している問題・エラーメッセージ

セルの値に漢字が含まれている場合、その漢字の読み仮名がカタカナ表記で語尾についてしまう。
(例)駐車場代 ⇒ 駐車場代チュウシャジョウダイ

イメージ説明

該当のソースコード

dart

import 'package:desktop_drop/desktop_drop.dart'; import 'package:flutter/material.dart'; import 'dart:io'; import 'package:excel/excel.dart'; import 'package:intl/intl.dart'; import 'package:cross_file/cross_file.dart'; import 'package:path/path.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, home: Scaffold( endDrawer: Drawer( child: ListView.builder( itemCount: 5, itemBuilder: (BuildContext context, int index) { return ListTile( title: Text("Item $index"), ); }, ), ), appBar: AppBar( title: const Text('ドキュメント変換ツール(仮)'), ), body: Center( child: Container( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Wrap( direction: Axis.horizontal, runSpacing: 8, spacing: 8, children: const [ExmapleDragTarget()], ), ], ), ), ) )); } } class ExmapleDragTarget extends StatefulWidget { const ExmapleDragTarget({Key? key}) : super(key: key); _ExmapleDragTargetState createState() => _ExmapleDragTargetState(); } class _ExmapleDragTargetState extends State<ExmapleDragTarget> { final List<XFile> _list = []; bool _dragging = false; Offset? offset; // ファイルをドロップするエリアの実装 Widget build(BuildContext context) { return DropTarget( onDragDone: (detail) async { setState(() { _list.clear(); _list.addAll(detail.files); }); for (final file in detail.files) { debugPrint(' ${file.path} ${file.name}' ' ${await file.lastModified()}' ' ${await file.length()}' ' ${file.mimeType}'); int extIndex = file.name.lastIndexOf('.') + 1; if (file.name.substring(extIndex, file.name.length) == 'xlsx') { var bytes; bytes = File(file.path).readAsBytesSync(); var excel = Excel.decodeBytes(bytes); // 行ごとのループ for (var i = 0; i < excel.tables['Sheet1']!.rows.length; i++) { var rowData = excel.tables['Sheet1']!.rows[i]; // 列ごとのループ for (var j = 0; j < rowData.length; j++) { Data? data = rowData[j]; if (data != null) { debugPrint(data.value); // 表示確認用 } } } } } } }

試したこと

VSCodeで上記ソースの変数"excel"について、ウォッチ式で見た図です。
イメージ説明
イメージ説明
イメージ説明

decodeBytesが原因な気がしていますが、解決方法が分かっていません。

dart

bytes = File(file.path).readAsBytesSync(); var excel = Excel.decodeBytes(bytes);

補足情報(FW/ツールのバージョンなど)

  • Flutter 3.4.0-19.0.pre.192
  • Framework • revision 4930444f4a
  • Dart 2.19.0(build 2.19.0-183.0.dev)
  • Engine • revision f72107f457
  • DevTools 2.17.0
  • Flutterライブラリ excel 2.0.0-null-safety-3

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。