複数のクライアントが接続するサーバーを作成し、16 進データをサーバーに送信します。データはサーバーによって処理され、このデータを Excel シートに保存したいと考えています。私は次のコードを使用していますが、これは毎回Excelファイルを開き、データを書き込んで閉じます。また、Excel ファイルは既に存在している必要があります。
public class CreateExcelDoc
{
private static Excel.Workbook workbook = null;
private static Excel.Worksheet worksheet = null;
private static Excel.Range workSheet_range = null;
private static Excel.Application app = new Excel.Application();
private static Excel.Workbooks workbooks = app.Workbooks;
public static void createDoc()
{
object misValue = System.Reflection.Missing.Value;
try
{
workbook = workbooks.Open("C:\\Documents and Settings\\pratyush\\Desktop\\test.xlsx", misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue);
app.Visible = true;
worksheet = (Excel.Worksheet)workbook.Sheets[1];
}
catch (Exception e)
{
Console.Write("Error");
}
finally
{
}
}
public static void createHeaders(int row, int col, string htext, string cell1, string cell2, int mergeColumns, string b, bool font, int size, string fcolor)
{
worksheet.Cells[row, col] = htext;
workSheet_range = worksheet.get_Range(cell1, cell2);
workSheet_range.Merge(mergeColumns);
switch (b)
{
case "YELLOW":
workSheet_range.Interior.Color = System.Drawing.Color.Yellow.ToArgb();
break;
case "GRAY":
workSheet_range.Interior.Color = System.Drawing.Color.Gray.ToArgb();
break;
case "GAINSBORO":
workSheet_range.Interior.Color = System.Drawing.Color.Gainsboro.ToArgb();
break;
case "Turquoise":
workSheet_range.Interior.Color = System.Drawing.Color.Turquoise.ToArgb();
break;
case "PeachPuff":
workSheet_range.Interior.Color = System.Drawing.Color.PeachPuff.ToArgb();
break;
default:
// workSheet_range.Interior.Color = System.Drawing.Color..ToArgb();
break;
}
workSheet_range.Borders.Color = System.Drawing.Color.Black.ToArgb();
workSheet_range.Font.Bold = font;
workSheet_range.ColumnWidth = size;
if (fcolor.Equals(""))
{
workSheet_range.Font.Color = System.Drawing.Color.White.ToArgb();
}
else
{
workSheet_range.Font.Color = System.Drawing.Color.Black.ToArgb();
}
}
public static void addData(int row, int col, string data, string cell1, string cell2, string format)
{
worksheet.Cells[row, col] = data;
workSheet_range = worksheet.get_Range(cell1, cell2);
workSheet_range.Borders.Color = System.Drawing.Color.Black.ToArgb();
workSheet_range.NumberFormat = format;
}
public static void adddata()
{
createDoc();
//creates the main header
createHeaders(5, 2, "Total of Products", "B5", "D5", 2, "YELLOW", true, 10, "n");
//creates subheaders
createHeaders(6, 2, "Sold Product", "B6", "B6", 0, "GRAY", true, 10, "");
//add Data to to cells
addData(7, 2, "114287", "B7", "B7", "#,##0");
workbook.Close(true, System.Reflection.Missing.Value, System.Reflection.Missing.Value);
app.Quit();
}
public static void Main()
{
adddata();
}
}
}
私が望むのは、サーバーがクライアントIPアドレスという名前の新しいExcelファイルを静かに作成し、サーバーによって処理された後にデータを追加して静かに保存することです。現在、私のコードは毎回ファイルを開き、データをExcelファイルに保存してから閉じるため、これをどのように達成できますか。