excel/csvファイルからASCII以外の文字をすべて削除しようとしています。オンラインで読むと検索すると、私は文字を取り除くためにコードxlWorksheet.UsedRange.Replace("[^\\u0000-\\u007F]"
を与えた投稿を見つけましたが、文字はまだファイルに存在しています。ASCII以外の文字を削除する(Microsoft.Office.Interop.Excelを使用)
はまた、私たちは置き換えるために何かを見つけることができませんでした
を示すダイアログボックスを取得します。 検索のその他の方法については、[オプション]をクリックしてください。
FYI:置き換えようとしているデータが保護された シートにある可能性があります。 Excelは保護されたシートのデータを置き換えることはできません。
さらに進める方法がわかりません。私はオンラインで見て読んでいますが、これまでのところ有用なものは何も見つかりませんでした。
ありがとうございました。各範囲内
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using Excel = Microsoft.Office.Interop.Excel;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"C:\Users\username\Desktop\Error Records.csv");
Excel.Worksheet xlWorksheet = xlWorkbook.Sheets[1];
Excel.Range xlRange = xlWorksheet.UsedRange;
int lastUsedRow = xlWorksheet.Cells.Find("*", System.Reflection.Missing.Value,
System.Reflection.Missing.Value, System.Reflection.Missing.Value,
Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlPrevious,
false, System.Reflection.Missing.Value, System.Reflection.Missing.Value).Row;
int lastUsedColumn = xlWorksheet.Cells.Find("*", System.Reflection.Missing.Value,
System.Reflection.Missing.Value, System.Reflection.Missing.Value,
Excel.XlSearchOrder.xlByColumns, Excel.XlSearchDirection.xlPrevious,
false, System.Reflection.Missing.Value, System.Reflection.Missing.Value).Column;
// int lastColumnCount = lastUsedColumn;
//;
// for (int i = 1; i <= lastUsedColumn; i++)
// {
// for (int j = 1; j <= lastUsedRow; j++)
// {
// xlWorksheet.Cells[j, (lastColumnCount+1)] = "Testing data 134";
// }
// }
xlWorksheet.Cells[1, (lastUsedColumn + 1)] = "Title";
xlWorksheet.UsedRange.Replace("[^\\u0000-\\u007F]", string.Empty);
xlWorkbook.Save();
//cleanup
GC.Collect();
GC.WaitForPendingFinalizers();
//rule of thumb for releasing com objects:
// never use two dots, all COM objects must be referenced and released individually
// ex: [somthing].[something].[something] is bad
//release com objects to fully kill excel process from running in the background
Marshal.ReleaseComObject(xlRange);
Marshal.ReleaseComObject(xlWorksheet);
//close and release
xlWorkbook.SaveAs("C:\\Users\\username\\Desktop\\Errors_four.csv".Trim(), Excel.XlFileFormat.xlCSV);
xlWorkbook.Close();
Marshal.ReleaseComObject(xlWorkbook);
//quit and release
xlApp.Quit();
Marshal.ReleaseComObject(xlApp);
}
}
}
ExcelはRegexスタイルの置換をサポートしていないため、各セルをループして内容を文字列として抽出し、文字列の置換えをセルに戻して割り当てます。 – PaulF