如何导入制表符分隔的“ CSV”

汉弗莱

与文档互动列表教程中,从CSV文件导入数据显示了如何导入带有逗号分隔值的CSV文件。

但是,我将上传一个.txt带有制表符分隔值文件。(例如可能是从Excel导出的。)

如何修改该脚本以将导入的电子表格识别为制表符分隔的值,而不是逗号分隔的值?

莫格斯达

使用Utilities.parseCsv(csv, delimiter)下面是从谷歌Apps脚本教程适合交互使用的文档列表,替换CSVToArray()Utilities.parseCsv()

自动检测分隔符是制表符还是逗号是一件简单的事情:

// Detect delimiter - tab or comma
var delim = ",";
if (csvFile.indexOf("\t") != -1) delim = "\t"; 

importFromCSV

/**
 * Populates a sheet with contents read from a CSV file located
 * in the user's GDrive. If either parameter is not provided, the
 * function will open inputBoxes to obtain them interactively.
 *
 * Adapted from <I>Tutorial: Interacting With Your Docs List.</I>
 (https://developers.google.com/apps-script/articles/docslist_tutorial#section2)
 *
 * @param {string}fileName (Optional) The name of the input file.
 *
 * @param {string} sheetName (Optional) The name of the destination sheet.
 *        If the sheet does not exist, it will be created by
 *        this function. A pre-existing sheet will be cleared 
 *        before importing the CSV data.
 *
 * @returns {JsonObject} A summary of the import operation,
 *        including the date the input file was last updated
 *        [see <a href="https://developers.google.com/apps-script/class_file#getLastUpdated">File.getLastUpdated()</a>], and the number of rows
 *        and columns imported.
 * <PRE>
 *
 *   { lastUpdated : 5-Mar-2014, numRows : 2541, numCols : 22 }
 *  </PRE>
 *
 *  @throws {Error} "No Input File" if input CSV not found.
 */
function importFromCSV(fileName,sheetName) {
  var useBrowser = (!fileName);   // Assume that spreadsheet UI in use, if no args
  fileName = fileName || Browser.inputBox("Enter the name of the file in your Docs List to import (e.g. myFile.csv):");
  sheetName = sheetName || Browser.inputBox("Enter the name of the sheet to import into (e.g. Sheet1):");

  var files = DocsList.getFiles();
  var csvFile = "";
  var lastUpdated = 0;

  for (var i = 0; i < files.length; i++) {
    if (files[i].getName() == fileName) {
      csvFile = files[i].getContentAsString();
      lastUpdated = files[i].getLastUpdated();
      break;
    }
  }

  if (lastUpdated == 0) {
    Browser.msgBox("No Input File", "Either no file name was provided, or file does not exist.", Browser.Buttons.OK);
    throw new Error("No Input File");
  }
  else {
    // Detect delimiter - tab or comma
    var delim = ",";
    if (csvFile.indexOf("\t") != -1) delim = "\t"; 

    var csvData = Utilities.parseCsv(csvFile, delim);

    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName(sheetName);
    if (sheet === null) {
      ss.insertSheet(sheetName);
      sheet = ss.getSheetByName(sheetName);
    }

    sheet.clear();

    var numRows = csvData.length;
    var numCols = csvData[0].length; // assume all rows are same width

    // Make a single call to spreadsheet API to write values to sheet.
    sheet.getRange(1, 1, numRows, numCols).setValues( csvData );

  }

  // Report results (if UI attached)  
  Browser.msgBox("Imported " + numRows + " rows x " + numCols + "columns");

  // Return an object with import results
  return { lastUpdated : lastUpdated, numRows : numRows, numCols : numCols };
}

电子表格菜单项

要创建自定义菜单前端,请执行以下操作:

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var cMenuEntries = [{name: "Load CSV Data", functionName: "importFromCSV"}];
  ss.addMenu("Custom", cMenuEntries);
}

用参数调用

您还可以从其他脚本中调用该函数,并为csv文件名和电子表格标签传递参数。

function test_importFromCSV() {
  return importFromCSV("My CSV File.txt","Sheet1");
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当文件没有标题行时,如何使用Import-CSV导入制表符分隔的文本文件?

来自分类Dev

如何从配置单元查询创建以制表符分隔的文件?

来自分类Dev

使用phpMyAdmin将带有部分数据的制表符分隔的csv文件导入mysql表

来自分类Dev

Python-以特定方式将制表符分隔的文件转换为csv

来自分类Dev

使用熊猫read_csv读取此制表符分隔的文件时,行丢失

来自分类Dev

带有制表符作为引号的CSV文件

来自分类Dev

读取以制表符分隔的CSV格式的标签

来自分类Dev

PHP-将制表符分隔的TXT文件转换为CSV

来自分类Dev

如何使用cut使制表符成为分隔符?

来自分类Dev

运行Powershell将所有csv文件转换为同一文件夹中的制表符分隔的文本

来自分类Dev

Excel经常将.csv文件保存为制表符分隔格式。发生了什么?

来自分类Dev

如何使用cut使制表符成为分隔符?

来自分类Dev

使用制表符分隔的proc导入

来自分类Dev

无法将制表符分隔的.txt文件转换为csv

来自分类Dev

使用unoconv转换制表符分隔的csv

来自分类Dev

从Excel 2016保存的俄语UTF-8制表符分隔的csv文件在文本编辑器中是垃圾

来自分类Dev

CSV文件处理-删除引号并将逗号分隔符替换为制表符

来自分类Dev

将txt文件转换为用制表符分隔的csv

来自分类Dev

如何合并制表符分隔的文件?

来自分类Dev

CSV文件通常使用制表符定界符,如何将Univocity Parsers .csv解析器配置为允许制表符定界符?

来自分类Dev

将制表符分隔的CSV排序到对象中的最佳方法?

来自分类Dev

如何使用.split()从较大的gzip文件中导入制表符分隔的文本?大块?

来自分类Dev

使用python和pandas将错误创建的大型csv文件转换为制表符分隔的文件

来自分类Dev

PostGreSQL CSV 导入行分隔符

来自分类Dev

VBS - 将制表符分隔的 CSV 文件转换为 XLSX

来自分类Dev

如何使用布尔值从制表符分隔的 csv 文件中创建具有唯一提及的列表字典

来自分类Dev

在 PostgreSQL 中使用分隔符制表导入 CSV 数据

来自分类Dev

读取 1 行制表符分隔数据并导出为“+”分隔时生成的空 CSV 文件

来自分类Dev

将 R 结果导出为 CSV 或制表符分隔格式以在 Tassel 中使用

Related 相关文章

  1. 1

    当文件没有标题行时,如何使用Import-CSV导入制表符分隔的文本文件?

  2. 2

    如何从配置单元查询创建以制表符分隔的文件?

  3. 3

    使用phpMyAdmin将带有部分数据的制表符分隔的csv文件导入mysql表

  4. 4

    Python-以特定方式将制表符分隔的文件转换为csv

  5. 5

    使用熊猫read_csv读取此制表符分隔的文件时,行丢失

  6. 6

    带有制表符作为引号的CSV文件

  7. 7

    读取以制表符分隔的CSV格式的标签

  8. 8

    PHP-将制表符分隔的TXT文件转换为CSV

  9. 9

    如何使用cut使制表符成为分隔符?

  10. 10

    运行Powershell将所有csv文件转换为同一文件夹中的制表符分隔的文本

  11. 11

    Excel经常将.csv文件保存为制表符分隔格式。发生了什么?

  12. 12

    如何使用cut使制表符成为分隔符?

  13. 13

    使用制表符分隔的proc导入

  14. 14

    无法将制表符分隔的.txt文件转换为csv

  15. 15

    使用unoconv转换制表符分隔的csv

  16. 16

    从Excel 2016保存的俄语UTF-8制表符分隔的csv文件在文本编辑器中是垃圾

  17. 17

    CSV文件处理-删除引号并将逗号分隔符替换为制表符

  18. 18

    将txt文件转换为用制表符分隔的csv

  19. 19

    如何合并制表符分隔的文件?

  20. 20

    CSV文件通常使用制表符定界符,如何将Univocity Parsers .csv解析器配置为允许制表符定界符?

  21. 21

    将制表符分隔的CSV排序到对象中的最佳方法?

  22. 22

    如何使用.split()从较大的gzip文件中导入制表符分隔的文本?大块?

  23. 23

    使用python和pandas将错误创建的大型csv文件转换为制表符分隔的文件

  24. 24

    PostGreSQL CSV 导入行分隔符

  25. 25

    VBS - 将制表符分隔的 CSV 文件转换为 XLSX

  26. 26

    如何使用布尔值从制表符分隔的 csv 文件中创建具有唯一提及的列表字典

  27. 27

    在 PostgreSQL 中使用分隔符制表导入 CSV 数据

  28. 28

    读取 1 行制表符分隔数据并导出为“+”分隔时生成的空 CSV 文件

  29. 29

    将 R 结果导出为 CSV 或制表符分隔格式以在 Tassel 中使用

热门标签

归档