我想出了如何用 C# 制作一个新的 Excel 工作表。我这样做:
private static Microsoft.Office.Interop.Excel.ApplicationClass appExcel;
appExcel.Worksheets.Add();
Run Code Online (Sandbox Code Playgroud)
但我不知道如何为我制作的 Excel 工作表命名,也不知道如何将其放在末尾而不是开头。
我试过这个:
sheet1 = appExcel.Worksheets.Add();
sheet1.name = "test";
Run Code Online (Sandbox Code Playgroud)
但这没有用。我也查看了添加功能,但我无法以这种方式填写名称:appExcel.Worksheets.Add("test");
我的代码:
excel_init("C:\\Users\\me\\Desktop\\excel2.xlsx");
private static Microsoft.Office.Interop.Excel.ApplicationClass appExcel;
private static Workbook newWorkbook_First = null;
private static _Worksheet objsheet = null;
static void excel_init(String path)
{
appExcel = new Microsoft.Office.Interop.Excel.ApplicationClass();
if (System.IO.File.Exists(path))
{
// then go and load this into excel
newWorkbook_First = appExcel.Workbooks.Open(path, true, true,5); // does NOT make 5 excel sheet???
objsheet = (_Worksheet)appExcel.ActiveWorkbook.ActiveSheet;
}
else
{
try
{ …Run Code Online (Sandbox Code Playgroud) 这是我目前的if语句:
if (excel_getValue("A" + i) == "" &&
excel_getValue("A" + (i + 1)) == "" &&
excel_getValue("A" + (i + 2)) == "" &&
excel_getValue("A" + (i + 3)) == "" &&
excel_getValue("A" + (i + 4)) == "" &&
excel_getValue("A" + (i + 5)) == "" &&
excel_getValue("A" + (i + 6)) == "" &&
excel_getValue("A" + (i + 7)) == "" &&
excel_getValue("A" + (i + 8)) == "")
Run Code Online (Sandbox Code Playgroud)
无论如何,我可以减少这种说法吗?我应该在for循环中构建这个if语句吗?
顺便说一下,这个if语句如果已经在forloop中并且它使用了forloop的i
这很难解释,但我会在我的代码中展示我想要的一个例子:目前我这样做:
var something1 = new (Microsoft.Office.Interop.Excel.Worksheet)appExcel.Worksheets.Add(Type.Missing, appExcel.Worksheets[appExcel.Worksheets.Count], 1, XlSheetType.xlWorksheet);
var something2 = new (Microsoft.Office.Interop.Excel.Worksheet)appExcel.Worksheets.Add(Type.Missing, appExcel.Worksheets[appExcel.Worksheets.Count], 1, XlSheetType.xlWorksheet);
var something3 = new (Microsoft.Office.Interop.Excel.Worksheet)appExcel.Worksheets.Add(Type.Missing, appExcel.Worksheets[appExcel.Worksheets.Count], 1, XlSheetType.xlWorksheet);
something1.Name = "sheet1";
something2.Name = "sheet2";
something3.Name = "sheet3";
Run Code Online (Sandbox Code Playgroud)
我想在for循环中制作那些var这是我认为它应该是:
for (int i=1;i<4;i++)
{
var ("something" +i) = new Microsoft.Office.Interop.Excel.Worksheet)appExcel.Worksheets.Add(Type.Missing, appExcel.Worksheets[appExcel.Worksheets.Count], 1, XlSheetType.xlWorksheet); // this (of course) doenst work
}
Run Code Online (Sandbox Code Playgroud)
关于如何做到这一点的任何想法?
我试过这个,但它不起作用:
var something = new (Microsoft.Office.Interop.Excel.Worksheet)appExcel.Worksheets.Add(Type.Missing, appExcel.Worksheets[appExcel.Worksheets.Count], 1 , XlSheetType.xlWorksheet)[4];
例如,我有这些字符串:
"qwe/qwe/qwe/qwe//qwe/somethinghere_blabla.exe"
"qwe/qwe/q//we/qwe//qwe/somethingother_here_blabla.exe"
"qwe/qwe/qwe/qwe//qwe/some_numbers_here_blabla.exe"
Run Code Online (Sandbox Code Playgroud)
现在我想在最后的'/'和最后的'_'之间得到文本.结果将是:
"somethinghere"
"somethingother_here"
"some_numbers_here"
Run Code Online (Sandbox Code Playgroud)
最简单,最清晰的方法是什么?
我不知道如何做到这一点,如果我将它们分成'/'和'_',那么这样做会分开吗?我想不出怎么办.
也许从末尾扫描字符串直到它到达第一个'/'和'_'?或者有更简单快捷的方式吗?因为它必须扫描~10,000个字符串.
string[] words = line.Split('/', '_'); //maybe use this? probably not
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我想列出用户输入的内容.但是当这个列表已经有用户填写的int时,它必须给出一个error(Console.Writeline).这是我到目前为止:
List<int> list = new List<int>();
//this code is in a for-loop
string a = console.ReadLine();
if(!int.TryParse(a, out number))
Console.WriteLine("give a number");
else
{
if (number < anotherlist.Count && number >= 0)
{
for (int i = 0; i < list.Count; i++)
{
if (list[i] == number)
Console.WriteLine("number already given");//so dont add this number to the list
else
list.Add(number);
}
}
}
Run Code Online (Sandbox Code Playgroud)